当我们在带有参数SHUT_RDWR
的套接字上调用shutdown()
函数时,我们停止了套接字上的读/写可能性,但套接字仍然没有被 destruct .我不明白SHUT_RDWR
的目的.它给了我们什么?为什么我们需要一个没有读/写可能性的套接字?我认为SHUT_RDWR
应该像close()
函数一样工作,但事实并非如此.
当我们在带有参数SHUT_RDWR
的套接字上调用shutdown()
函数时,我们停止了套接字上的读/写可能性,但套接字仍然没有被 destruct .我不明白SHUT_RDWR
的目的.它给了我们什么?为什么我们需要一个没有读/写可能性的套接字?我认为SHUT_RDWR
应该像close()
函数一样工作,但事实并非如此.
SHUT_RDWR
所做的是关闭套接字上的连接,同时保持数据句柄(文件描述符)打开.
例如,假设一个套接字用于双向通信,而您的连接端用SHUT_RDWR
将其关闭.然后,如果连接另一端的人try 写(也许也读?),它将失败,因为连接已关闭.
但是,文件描述符仍处于打开状态,这意味着如果有任何数据留给您接收/读取,您可以继续操作,然后关闭文件描述符.
换句话说,shutdown()表示关闭连接,close()表示关闭文件描述符并丢弃文件描述的"缓冲区"中的任何数据
UNIX环境中的高级编程也有以下原因:
既然我们可以关闭插座,为什么需要关机?有几个