发布时间:2014-09-17 16:28:53
通常调用close函数对socket进行关闭,为啥还要选用shutdown来关闭socket,原因有如下两个:1).在介绍close的时候,已经说明了,close只有在对应socket的引用计数为0时,才会真正发送FIN报文来关闭这个连接。shutdown没有这个限制,直接发送FIN报文。2).close同时终止了读和写两个方向的数据传输。但是TCP的双工的,我们有.........【阅读全文】
发布时间:2014-09-17 16:17:45
并发服务器程序的轮廓点击(此处)折叠或打开pid_t pid;int listenfd,connfd;listenfd = socket(AF_INET,SOCK_STREAM,0);bind(listenfd,...);listen(listenfd, LISTENQ);.........【阅读全文】
发布时间:2014-09-16 17:00:53
TCP主动关闭的一端,在收到对方的FIN并发送ACK,进入2MSL(maximun segment lifetime,最大报文生存期)的等待时间。原因:1.防止发送的ACK丢失,等待着,如果对端重发FIN报文,可以重发ACK。2.在2MSL时间内阻止定义这个连接的socket(客户IP地址和端口,服务器IP地址和端口)再次被使用。.........【阅读全文】
发布时间:2014-09-16 11:25:31
1.任何一端调用close,称此端为主动关闭,如果此时socket描述符的引用计数为0,则发送一个FIN报文2.接收到FIN的对端执行被动关闭。这个FIN由TCP确认,作为一个文件结束符传递给接收端应用程序,因为FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。发送ACK确认3.对端也调用close,发送FIN4.发送ACK.........【阅读全文】