如果没有在两个方向上都关闭,则它将永远不会关闭-不管到期计时器如何?-它可以半关闭,但是如果只有一个启动close(),则tcp连接可以终止吗?
换句话说:在TCP连接终止中-当只有客户端发起关闭而服务器没有发起关闭时,您可以完全关闭连接吗?还是可以通过两种方式分别关闭tcp连接?
每个对等方都可以独立于其他对等方关闭TCP连接,并且当对等方尝试从对等方读取数据时,它只会获得EOF(例如,没有更多的字节);如果尝试写入已关闭的连接,则对等方将获得ECONNRESET或EPIPE仅在套接字知道对等方不想接收更多数据的情况下,才由对等方访问,请参阅下文。
断开连接实际上包括两部分:
shutdown(sock,SHUT_WR)
。在这种情况下,内核将向对等方发送一个FIN,从而发出信号,表明将不再有其他数据。从同级读取将返回EOF。shutdown(sock,SHUT_RD)
。在这种情况下,最初不会将任何信息发送给对等方,但是如果从对等方接收到数据,则将使用RST拒绝这些数据。close()
因此,调用等同于同时关闭连接的两侧(SHUT_RDWR
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句