当套接字连接中的一个端点断开连接时会发生什么

时间:2014-04-02 07:45:01

标签: sockets tcp communication

当两个端点(A& B)通过插座连接,并且端点A断开连接时, 终点B是否会立即得到关于断开连接的通知?

终点B知道连接丢失的触发器是什么?

当他将数据发送到终点A时,是否会收到有关断开连接的通知?

请将答案集中在TCP协议的属性上,忽略特定的语言实现。

2 个答案:

答案 0 :(得分:0)

这取决于'断开'的含义。如果你的意思是A正确关闭套接字,B在读取时会得到一个流结束(recv()返回零。)如果你的意思是它中止,根据相关的平台会发生各种各样的事情,但大多数情况都会发生在几次ECONNRESET来电之后,B可能会获得send()

答案 1 :(得分:0)

当服务器(B)通过write()发送信息块时,客户端(A)突然断开连接或崩溃,服务器可能会收到EPIPESIGPIPE信号。此信号通常以RESET信号开头。

RESET是TCP告知发送方接收方不愿接受更多数据的方式。但由于发送方已经发送了数据块,因此在它知道EPIPE信号之前会看到SIGPIPERESET信号。

这是帮助您更好理解的link