如果它没有向两个方向关闭,它是否会永远关闭 - 无论过期时间器? - 它可以半关闭但是如果只有一个启动close(),tcp连接可以终止吗?
换句话说: 在TCP连接终止中 - 当只有客户端启动关闭但服务器没有关闭时,您是否可以完全关闭连接。 或者可以通过两种方式独立关闭tcp连接吗?
答案 0 :(得分:1)
每个对等体可以独立于另一个对等体关闭TCP连接,当对等体尝试从对等体读取时,对等体只会获得EOF(例如,不再有字节),如果它尝试写入连接,则获得ECONNRESET或EPIPE由对等方关闭,但仅当套接字知道对等方不想接收更多数据时,请参见下文。
关闭连接实际上包含两部分:
shutdown(sock,SHUT_WR)
。在这种情况下,内核将向对等体发送FIN,以便发出不再有数据的信号。从同伴那里读书将返回EOF。shutdown(sock,SHUT_RD)
。在这种情况下,最初不会向对等方发送任何信息,但是如果从对等方收到数据,则它们将被RST拒绝。 调用close()
相当于同时关闭连接的两端(SHUT_RDWR
)。