大家好,在上篇利用TCP和UDP协议,实现基于Socket的小聊天程序(初级版)》博客中,所写程序只是实现简单的连接通信,基于控制台实现,运用了TCP和UDP两种传输协议。今天我和大家分享一个基于窗体的聊天程序,使用了多线程,实现的功能类似于QQ的聊天,不同的是只有一个服务器端,但可以有多个客户端与其通信,只能实现简单的文字信息交流。。。

同样,这个聊天程序也需要一个服务器端,和N个客户端来模拟实现,首先我们来搭建服务器端

首先贴上服务器端的界面图:

利用TCP传输协议实现基于Socket的聊天程序(高级版_多线程)

界面很简单,左边一个客户端在线的列表,一个显示消息的文本框和一个发送消息的文本框,为了演示简单,我把IPPort都固定为127.0.0.18888

首先我们来看看【启动服务器按钮的代码:

 1       //负责监听 客户端 连接的线程
 2         Thread threadWatch = null;
 3         
 4         //负责监听的套接字
 5         Socket socketServer = null;
 6 
 7         private void btn_StartServer_Click(object sender, EventArgs e)
 8         {
 9             //创建 服务器 负责监听的套接字 参数(使用IP4寻址协议,使用流式连接,使用TCP传输协议)
10             socketServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
11             
12             //获取IP地址
13             IPAddress ip = IPAddress.Parse(tb_IP.Text.Trim());
14             
15             //创建 包含IP和Port的网络节点对象
16             IPEndPoint endPoint = new IPEndPoint(ip, int.Parse(tb_Port.Text.Trim()));
17 
18             //将负责监听 的套接字 绑定到 唯一的IP和端口上
19             socketServer.Bind(endPoint);
20 
21             //设置监听队列 一次可以处理的最大数量
22             socketServer.Listen(10);
23 
24             //创建线程 负责监听
25             threadWatch = new Thread(WatchConnection);
26             //设置为后台线程
27             threadWatch.IsBackground = true;
28             //开启线程
29             threadWatch.Start();
30 
31             ShowMsg("=====================服 务 器 启 动 成 功======================");
32             
33         }

相关文章: