引入命名空间

System.Net.Sockets;

System.Net;

System.Threading;

服务端

启动监听的时候开启线程

Thread ServerTh = new Thread(ServerListener);

ServerTh.Start();

    StreamReader sr;

        StreamWriter sw;

        NetworkStream NS;

        void ServerListener()

        {

   //创建监听对象

            TcpListener tl = new TcpListener(IPAddress.Parse(""),  int.Parse(""));

           //启动监听

            tl.Start();   

       //创建连接的客户端

            TcpClient tc = tl.AcceptTcpClient();

//获取传送的网络流,之后读写操作均是对流的操作

            NS = tc.GetStream();

            sr = new StreamReader(NS);

            sw = new StreamWriter(NS);

            try

            {

                while (true)

                {

                    string con = sr.ReadLine();

                    if (con.Trim() != "")

                    {

                   Old_TB.Text += DateTime.Now.ToString() + "\r\n";

                        Old_TB.Text += "客户端说:" + con + "\r\n";

                    }

                }

            }

            catch (Exception e)

            {

                Old_TB.Text = e.Message;

                tc.Close();

            }

        }

发送信息时

 sw = new StreamWriter(NS);

            sw.WriteLine(New_TB.Text);

            sw.Flush();

            Old_TB.Text += DateTime.Now.ToString() + "\r\n";

            Old_TB.Text += New_TB.Text + "\r\n";

     New_TB.Clear();

客户端

同服务端的操作大致相同,只是不用创建监听的对象,发送和接受的均相同。