简单设计窗体

Client.png

  图中方框是一个隐藏的Textbox控件,用于显示对客户端的连接信息

客户端代码

定义socket全局变量

 Socket socketSend;

连接按钮事件

//连接服务端
        private void button1_Click(object sender, EventArgs e)
        {
            //创建一个socket对象并设置其寻址方案为内网,套接字类型为Strem流,协议类型为TCP
            socketSend = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //将网络端点表示成ip地址和端口,ip地址为服务器的地址,这里为本机地址,端口号随便填,不建议填写专用端口号
            IPEndPoint point = new IPEndPoint(IPAddress.Parse("47.122.49.231"), 8500);
            //连接服务器
            socketSend.Connect(point);
            showMsg("连接成功");
            Control.CheckForIllegalCrossThreadCalls = false;
            //创建线程
            Thread th = new Thread(Recevice);
            //将线程至于后台运行
            th.IsBackground = true;
            //开始运行线程
            th.Start();
        }

客户端接收服务端发送的消息

 //客户端接收服务端发送的消息
        void Recevice()
        {
            //使用try...catch语句接收消息
            try
            {
                //将客户端一直置于接收信息
                while (true)
                {
                    //定义字节数组,用于缓存接收的信息,自定义大小
                    byte[] buffer = new byte[1024 * 1024 * 2];
                    //如果位接收到信息,则跳出循环
                    int r = socketSend.Receive(buffer);
                    if (r == 0)
                    {
                        break;
                    }
                    //如果接收到信息,则将接收到的信息编码成字符串的形式并打印在Textbox控件中
                    string str = Encoding.UTF8.GetString(buffer, 0, r);
                    showMsg(socketSend.RemoteEndPoint + ":" + str);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                throw;
            }
        }

自定义打印函数

void showMsg(string s)
        {
            textBox1.AppendText(s + "\r\n");
        }

客户端向服务器发送消息

//客户端向服务器发送消息
        private void button2_Click(object sender, EventArgs e)
        {
                string str = textBox2.Text;
                string str1 = str ;
               //将发送的消息编码成字节发送出去
                byte[] buffer = System.Text.Encoding.UTF8.GetBytes(str1);
                socketSend.Send(buffer);
        }

客户端运行结果

运行结果.png
服务端见下篇文章