专注于高品质PHP技术等信息服务于一体 [STIEMAP] [RSS]

百度提供的广告:
c#
当前位置:首页 > 技术文档 > c# >  > 
C# TcpListener 通信源码

1,服务器端


        private TcpListener listener = null;



        /// <summary>


        /// 初始化


        /// </summary>


        public void Init()


        {


            //开始监听


            int port = 8999;


            string ip = "127.0.0.1";


            listener = new TcpListener(IPAddress.Parse(ip), port);


            listener.Start();


            WriteMsg("服务器开始监听");


            Thread thread = new Thread(new ThreadStart(Listener));


            thread.IsBackground = true;


            thread.Start();


        }




        /// <summary>


        /// 监听


        /// </summary>


        public void Listener()


        {


            while(true)


            {


                string msg = "";


                Socket socket = listener.AcceptSocket();


                byte[] bytes = new byte[100];


                socket.Receive(bytes);


                msg = Encoding.Unicode.GetString(bytes);


                WriteMsg("客户端发送"+ msg.Trim());


                Thread.Sleep(2000);


                bytes = Encoding.Unicode.GetBytes("当前时间"+DateTime.Now);


                socket.Send(bytes);


                socket.Close();


            }


        }



        /// <summary>


        /// 输出信息


        /// </summary>


        /// <param name="msg"></param>


        public void WriteMsg(string msg)


        {


            textBoxMsg.AppendText(msg+"\r\n");


        }


        


2,通信dll 类库


    public class ModemConn


    {


        //端口号


        private int port;


        //IP


        private string ip;


        //tcp


        private TcpClient client = new TcpClient();



        /// <summary>


        /// 初始化通讯


        /// </summary>


        /// <returns></returns>


        public bool Init(string ip,int port)


        {


            bool flag = false;


            try


            {


                this.port = port;


                this.ip = ip;


                flag = true;


            }


            catch


            {


            }


            return flag;


        }



        /// <summary>


        /// 清理通讯


        /// </summary>


        public void Clean()


        {


            client.GetStream().Flush();


        }



        /// <summary>


        /// 连接服务器


        /// </summary>


        /// <returns></returns>


        public bool Connect()


        {


            bool flag = false;


            try


            {


                client.Connect(IPAddress.Parse(ip), port);


                flag = true;


            }


            catch


            {


 


            }


            return flag;


        }



        /// <summary>


        /// 检测是否已经连接


        /// </summary>


        /// <returns></returns>


        public bool Connected()


        {


            return client.Connected;


        }




        /// <summary>


        /// 断开连接


        /// </summary>


        public void Close()


        {


            client.Close();


        }



        /// <summary>


        /// 发送数据


        /// </summary>


        /// <param name="buffer"></param>


        /// <returns></returns>


        public bool Send(string buffer)


        {


            bool flag = false;


            try


            {


                Stream stream = client.GetStream();


                byte[] bytes = Encoding.Unicode.GetBytes(buffer);


                stream.Write(bytes, 0, bytes.Length);


                flag = true;


            }


            catch


            {


            }


            return flag;


        }



        /// <summary>


        /// 接收数据


        /// </summary>


        /// <param name="len"></param>


        /// <returns></returns>


        public string Receive(int len)


        {


            string str = "";


            try


            {


                Stream stream = client.GetStream();


                byte[] bytes = new byte[len];


                stream.Read(bytes, 0, len);


                str = Encoding.Unicode.GetString(bytes);


            }


            catch


            {


            }


            return str;


        }



    }


3,调用


        /// <summary>


        /// 输出信息


        /// </summary>


        /// <param name="msg"></param>


        public void WriteMsg(string msg)


        {


            textBoxMsg.AppendText(msg + "\r\n");


        }



        //发送数据


        private void button_send_Click(object sender, EventArgs e)


        {


            int port = 8999;


            string ip = "127.0.0.1";


            ModemConn conn = new ModemConn();


            conn.Init(ip, port);


            conn.Connect();


            //发送


            conn.Send(textBoxText.Text);


            Thread.Sleep(2000);


            //接收


            string str = conn.Receive(4);


            WriteMsg("接收到的数据"+str);


            conn.Close();


        }