半连接
<aside>
💡 shutdown
不考虑描述符的引用计数,直接关闭描述符。可选择中止一个方向的连接(只中止读或只中止写)
</aside>
close
中止一个连接,但它只是减少描述符的引用计数,并不直接关闭连接,只有当描述符的引用计数为 0 时才关闭连接。参数
sockfd
:需要关闭的socket的描述符how
:允许为shutdown操作选择以下几种方式
SHUT_RD(0)
:关闭sockfd上的读功能,此选项将不允许sockfd进行读操作。该套接字不再接收数据,任何当前在套接字接收缓冲区的数据将被无声的丢弃掉SHUT_WR(1)
:关闭sockfd的写功能,此选项将不允许sockfd进行写操作。进程不能在对此套接字发出写操作。SHUT_RDWR(2)
:关闭sockfd的读写功能。相当于调用shutdown两次:第一次以SHUT_RD调用,第二次以SHUT_WR调用。
shotdown
与close
close
每被调用一次,计数减 1 ,直到计数为 0 时,也就是所用进程都调用了 close
,套接字将被释放。shutdown(sfd, SHUT_RDWR)
后,其它的进程将无法进行通信。但如果一个进程 close(sfd) 将不会影响到其它进程。参数