我知道stackoverflow中已经有很多类似的问题,但似乎没有什么能令人信服。基本上是想了解在什么情况下我需要使用一个超过另一个或使用两者。
还想知道close()&shutdown()与shuth rdwr是否相同。

最佳答案

TCP套接字是双向的-通过一个套接字发送和接收。close()停止双向通信。shutdown()提供了另一个参数,允许您指定可能要停止使用的方向。
另一个区别(close()和shutdown(rw))是,如果另一个进程正在使用close()将保持套接字打开,而shutdown()将关闭套接字,而不考虑其他进程。
shutdown()通常被客户机用来提供帧-以指示其请求的结束,例如,echo服务可能会缓冲它接收到的内容,直到客户机shutdown()的发送端通知服务器客户机已完成,然后服务器回复;客户机可以接收回复,因为它只有shutdown()写入,不是读书,是通过它的插座。

关于linux - Linux OS中的TCP close()vs shutdown(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48208236/

10-14 09:22