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

Sockets 当套接字连接中的一个端点断开时会发生什么情况,sockets,tcp,communication,Sockets,Tcp,Communication,当两个端点(A和B)通过插座连接,且端点A断开时, 端点B是否需要收到断开连接的通知 端点B知道连接丢失的触发器是什么 当他向端点A发送数据时,是否会收到断开连接的通知 请将答案集中在TCP协议的属性上,忽略特定的语言实现。这取决于“断开连接”的含义。如果您的意思是A正确关闭套接字,那么B在读取时会得到一个流结束(recv()返回零)。如果您的意思是它中止,根据相关平台的不同,可能会发生各种情况,但最有可能的是,B在进行两次send()调用后会得到一个econreset。当客户端(A)当服务器(

当两个端点(A和B)通过插座连接,且端点A断开时, 端点B是否需要收到断开连接的通知

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

当他向端点A发送数据时,是否会收到断开连接的通知


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

这取决于“断开连接”的含义。如果您的意思是A正确关闭套接字,那么B在读取时会得到一个流结束(
recv()
返回零)。如果您的意思是它中止,根据相关平台的不同,可能会发生各种情况,但最有可能的是,B在进行两次
send()
调用后会得到一个
econreset

当客户端(A)当服务器(B)通过
write()
发送大量信息时,服务器可能会收到
EPIPE
SIGPIPE
信号。此信号之前通常有一个
复位
信号

RESET
是TCP告知发送方接收方不愿意接受进一步数据的一种方式。但是,由于发送方已经发送了数据块,因此在知道
重置
信号之前,它会看到
EPIPE
SIGPIPE
信号


以下是帮助您更好地理解的方法。

另一个方法详细解释了事情。那么是哪一个呢?重置之前还是之后?您已在此处说明了这两种情况。
RESET
位于
EPIPE
信号之前。服务器可能会看到<代码> EPEPE <代码>信号,因为它处于发送数据的中间,可能不知道客户端不愿意接受数据(它早就用“RESET”信号通知)。