Windows下TCP通信,多个客户端连接服务器端。
一、服务器端流程实现如下:
1、通过socket函数,创建基于流式类型的socket,可名为serverSocket;
2、调用bind函数,绑定本地的监听端口号和本地IP地址;
3、调用listen函数,开始监听客户端请求。其中该函数第二个参数指定了最大连接客户端数目;
4、通过调用AfxBeginThread(ThreadFun, 0),实现创建线程处理监听后客户端请求;
5、关闭serverSocket;
如上流程中,通过创建线程办法实现对客户端请求的处理。
线程处理函数ThreadFun的实现流程如下:
1)调用accept等待客户端请求,并返回客户端通信的SOCKET,可名为clientSocket;
2)客户端请求接收成功后,继续调用AfxBeginThread(ThreadFun, 0)创建线程,实现对其他客户端请求做处理;
3)调用recv接收数据;
4)检测接收到数据的合法性,并调用send函数返回响应数据;
5)调用closesocket(clientSocket),关闭得到到客户端请求的socket。
二、客户端实现流程
通常流程没有加入超时处理,如下通过其他机制实现了客户端接收消息响应超时的处理。
实现流程如下:
1、创建socket基于流式SOCKET类型的SOCKET。
2、调用connect连接服务器
3、调用send发送请求数据;
4、通过select函数判断Socket接收数据是否超时。其中需要使用到FD_SET和TIME_VAL类型。
5、调用closesocket关闭客户端Socket。