C#的TcpClient和TCPSocket简单通信

服务端程序


        private void button1_Click(object sender, EventArgs e)
        {
            int port1 = Convert.ToInt32(port.Text);
            IPEndPoint p = new IPEndPoint(IPAddress.Any,port1);
            server = new TcpListener(p);
            //最多接受20个连接数
            server.Start(20);
            lbshow.Text = "服务器启动";
            Thread th = new Thread(listen);

            th.IsBackground = true;
            th.Start(server);
        }

        public void listen(object server)
        {
            while (true)
            {
                //强制类型转换
                TcpListener server1 = server as TcpListener;
                client = server1.AcceptTcpClient();
                lbshow.Text = "已经和客户端链接";

                //服务器端不断的接收数据
                Thread th1 = new Thread(receive);
                th1.IsBackground = true;
                th1.Start(client);



            }


        }

        public void receive(object s)
        {

            TcpClient client1 = s as TcpClient;
            while (true)
            {
                try
                {
                    Byte[] bytes = new Byte[256];
                    stream = client1.GetStream();

                    int n = stream.Read(bytes, 0, bytes.Length);
                    string data = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
                    //说明客户端断开了
                    if (n == 0)
                    {
                        lbshow.Text = "已经和客户端断开";
                        stream.Close();
                        client1.Close();
                        break;
                    }

                    listBox1.Items.Add("客户端" + data);
                }
                catch (Exception e)
                {

                    Console.WriteLine(e);
                }
                finally
                {
                    lbshow.Text = "已经和客户端断开";
                    stream.Close();
                    client1.Close();
                }

            }

        }




        //向客户端发送数据
        private void btnstart_Click(object sender, EventArgs e)
        {
            byte[] msg = Encoding.UTF8.GetBytes(message.Text);
            stream = client.GetStream();
            stream.Write(msg,0,msg.Length);
        }

        //服务器端接受客户端数据
        private void btnreceive_Click(object sender, EventArgs e)
        {
            Byte[] bytes = new Byte[256];
            stream = client.GetStream();
            stream.Read(bytes,0,bytes.Length);
            string data = Encoding.UTF8.GetString(bytes,0,bytes.Length);
            listBox1.Items.Add("客户端"+data);
        }

        private void btnabort_Click(object sender, EventArgs e)
        {
            if (stream != null)
                stream.Close();
            if (client != null)
                client.Close();
            if (server != null)
                server.Stop();
        }

        //程序加载的时候取消跨线程的检查
        private void Form1_Load(object sender, EventArgs e)
        {
            Control.CheckForIllegalCrossThreadCalls = false;
        }

客户端程序

  private void btnstart_Click(object sender, EventArgs e)
        {
            //获取ip
            string strip = ipadress.Text;
            //获取端口
            int port1 = Convert.ToInt32( port.Text);
            //连接
            client = new TcpClient();
            client.Connect(strip,port1);
        }
发布了42 篇原创文章 · 获赞 24 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/zhang245754954/article/details/77822631