close和shutdown函数解析
shutdown函数
终止网络连接的常用方法是调用close函数。不过close有两个限制,可以通过使用shutdown函数来避免。
(1)close把描述符的引用计数减1,仅在该计数变为0时才关闭套接字。而使用shutdown可以不管引用计数,就可以激发TCP的正常连接终止序列。
(2)close终止读和写两个方向的数据传输。既然TCP连接是全双工的,有时候我们需要告知对方,我们已经完成了数据发送,即使对端仍有数据要发送给我们。
调用shutdown可以关闭一半TCP连接,函数原型如下:
#include<sys/socket.h>
int shutdown(int sockfd, int howto);
返回:若成功则为0,若出错则为-1。
该函数的