电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

socket通信过程及流程VIP免费

socket通信过程及流程_第1页
1/9
socket通信过程及流程_第2页
2/9
socket通信过程及流程_第3页
3/9
socket 通信过程及流程 下图是基于TCP 协议的客户端/服务器程序的一般流程: 服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出 SYN 段并阻塞等待服务器应答,服务器应答一个SYN-ACK 段,客户端收到后从 connect()返回,同时应答一个 ACK 段,服务器收到后从 accept()返回。 数据传输的过程: 建立连接后,TCP 协议提供全双工的通信服务,但是一般的客户端/服务器程序的流程是由客户端主动发起请求,服务器被动处理请求,一问一答的方式。因此,服务器从 accept()返回后立刻调用read(),读 socket 就像读管道一样,如果没有数据到达就阻塞等待,这时客户端调用w rite()发送请求给服务器,服务器收到后从 read()返回,对客户端的请求进行处理,在此期间客户端调用read()阻塞等待服务器的应答,服务器调用w rite()将处理结果发回给客户端,再次调用read()阻塞等待下一条请求,客户端收到后从read()返回,发送下一条请求,如此循环下去。 如果客户端没有更多的请求了,就调用close()关闭连接,就像写端关闭的管道一样,服务器的read()返回0,这样服务器就知道客户端关闭了连接,也调用close()关闭连接。注意,任何一方调用close()后,连接的两个传输方向都关闭,不能再发送数据了。如果一方调用shutdow n()则连接处于半关闭状态,仍可接收对方发来的数据。 在学习 socket API 时要注意应用程序和 TCP 协议层是如何交互的: *应用程序调用某个 socket 函数时 TCP 协议层完成什么动作,比如调用connect()会发出 SYN 段 *应用程序如何知道 TCP 协议层的状态变化,比如从某个阻塞的socket 函数返回就表明 TCP 协议收到了某些段,再比如read()返回0就表明收到了 FIN 段 看图所示的•socket 通信过程 图 12.9 socket 的通信过程 1.建立套接字 在sys/socket.h中。 int socket(int family, int type, int protocol); socket()打开一个网络通讯端口,如果成功的话,就像open()一样返回一个文件描述符,应用程序可以像读写文件一样用read/write 在网络上收发数据,如果socket()调用出错则返回-1。对于IPv4,family参数指定为AF_INET。对于TCP 协议,type 参数指定为SOCK_STREAM,表示面向流的传输协议。如果是UDP 协议,则type 参数指定为SOCK_DGRAM,表示面向数据报的传输协议。protocol 参数的...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

socket通信过程及流程

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部