《socket Udp 多事务处理程序框架》.pdf
文本预览下载声明
Socket UDP 多事务处理程序框架
作者:wilson e-mail:wilsonwong@126.com QQ:106365089
本文档是从 Socket TCP 多事务处理程序框架改造而来,TCP 多事务处理框架中,因为每个客户端都必须与服
务器端保持连接状态。保持连接,一方面需要消耗服务器一定资源,另一方面,如果存在超大量客户端时,与每
一个客户端保持连接状态,显然是不可能的事情,因为通常 Socket 都有最大连接数,如 QQ 可能有上千万人同时
连接。因此,本文用无连接的 UDP 方案解决此问题。.全文分为四部分,部分与 TCP 相同的相关内容不再重述
第一部分:Socket 通信事务处理中的常见问题描述;
第二部分:通信事务处理的协议定义;
第三部分:程序框架原理描述;
第四部分:代码详解
第一部分:Socket 通信事务处理中的常见问题描述
所谓Socket 就是一组网络编程接口,两台计算机通过网络接口传输数据,就像同一台电脑的管道通信一样。Socket
有两种工作模式:面向连接的 TCP 和无连接的UDP。面向连接就是在双方通信前先建立一个连接,然后才能彼此通信,
就像打电话一样,想通话必须先拨号;无连接只要知道对方的IP 端口号,就可以直接给对方发送数据,就像邮寄,只
要知道对方的门牌号码就可以投递了,而不管对方在不在家。本文主要讨论面向连接的 TCP 模式,至于 UDP 模式另文
讨论。两种模式简单模型如下图所示(如无特别说明,以下所讨论都针对 UDP):
服务器端 客户端 服务器端 客户端
TCP UDP
Socket() Socket() Socket() Socket()
bind() bind()
请求数据
listen()
recvfrom() sendto()
事务处理
accept()
应答数据
sendto() recvfrom()
阻塞,等待连接 建立连接
Connect()
Close() Close()
请求数据
recv() send()
事务处理
应答数据
send() recv()
Close() Close()
网络通信双方角色上分为服务器端与客户端:
服务器端处理流程:建立套接字(socket()),套接字可以理解为文件打开符号绑定某IP 地址和端口号(bind()),
客户端将连接此 IP 地址和端口号接收客户端的数据请求(recvfrom()),此函数一直阻塞直到接收到数据为止事
务处理向客户端发送应答数据(send())关闭服务器端 socket.
客户端处理流程:建立套接字(socket())向服务器发送请求数据(sendto())等待服务器应答数据(recvfrom())
关闭客户端 socket.
以上流程是一个单一事务流程.UDP 多事务处理除了 TCP 所考虑的如何
显示全部