Sockets 当套接字连接中的一个端点断开时会发生什么情况
当两个端点(A和B)通过插座连接,且端点A断开时, 端点B是否需要收到断开连接的通知 端点B知道连接丢失的触发器是什么 当他向端点A发送数据时,是否会收到断开连接的通知Sockets 当套接字连接中的一个端点断开时会发生什么情况,sockets,tcp,communication,Sockets,Tcp,Communication,当两个端点(A和B)通过插座连接,且端点A断开时, 端点B是否需要收到断开连接的通知 端点B知道连接丢失的触发器是什么 当他向端点A发送数据时,是否会收到断开连接的通知 请将答案集中在TCP协议的属性上,忽略特定的语言实现。这取决于“断开连接”的含义。如果您的意思是A正确关闭套接字,那么B在读取时会得到一个流结束(recv()返回零)。如果您的意思是它中止,根据相关平台的不同,可能会发生各种情况,但最有可能的是,B在进行两次send()调用后会得到一个econreset。当客户端(A)当服务器(
请将答案集中在TCP协议的属性上,忽略特定的语言实现。这取决于“断开连接”的含义。如果您的意思是A正确关闭套接字,那么B在读取时会得到一个流结束(
recv()
返回零)。如果您的意思是它中止,根据相关平台的不同,可能会发生各种情况,但最有可能的是,B在进行两次send()
调用后会得到一个econreset
。当客户端(A)当服务器(B)通过write()
发送大量信息时,服务器可能会收到EPIPE
或SIGPIPE
信号。此信号之前通常有一个复位
信号
RESET
是TCP告知发送方接收方不愿意接受进一步数据的一种方式。但是,由于发送方已经发送了数据块,因此在知道重置
信号之前,它会看到EPIPE
或SIGPIPE
信号
以下是帮助您更好地理解的方法。另一个方法详细解释了事情。那么是哪一个呢?重置之前还是之后?您已在此处说明了这两种情况。
RESET
位于EPIPE
信号之前。服务器可能会看到<代码> EPEPE <代码>信号,因为它处于发送数据的中间,可能不知道客户端不愿意接受数据(它早就用“RESET”信号通知)。