linux - Linux OS中的TCP close()vs shutdown()

标签 linux networking network-programming

我知道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/

相关文章:

mysql - 如何从另一台PC在线连接到MySQL数据库?网络

c# - TCP/IP客户端服务器在c#中通过不同网络进行通信

linux - 配置驱动、基于文本的 Linux 配置向导

linux - 复制 bash 目录后,在新目录中编辑文件名?

networking - 为什么在建立连接后的第一个 TCP 请求中 ACK = 1 而不是 2?

c - TCP 校验和为 0

linux - 在 Linux 上接收所有多播 ICMPv6 数据包

linux - Glusterfs 融合客户端在复制文件时显示陈旧文件句柄错误

c - C 向数组中添加数据

c - getpeername 后出现段错误