MGNeo Asked:2022-04-08 20:37:38 +0800 CST2022-04-08 20:37:38 +0800 CST 2022-04-08 20:37:38 +0800 CST 套接字看不到 TCP 连接断开 772 有以下情况。 一台机器上有一个 TCP 连接,通过loopback. 有两个套接字А和Б,它们设置为非阻塞模式。调用socket ,然后А调用socket ,返回 0。shutdown(..., SD_BOTH) + close()Бrecv() 情况正常吗?在我看来,在脚本中,套接字Б应该检测到通道的关闭,因此后续调用recv()不应返回 0。 c++ 1 个回答 Voted Best Answer Fat-Zer 2022-04-08T21:03:25+08:002022-04-08T21:03:25+08:00 情况正常吗? 是的,它应该是这样的,POSIX 要求当连接被第二方正确关闭时,如果套接字上没有更多消息,recv()它应该返回0. 这应该用作连接完成的指示。 实际上,0它可能会在其他情况下返回(请参阅您的协议的系统文档),例如: 收到的零长度数据报(与 TCP 无关) 在调用recv中传递了一个长度为零的缓冲区
是的,它应该是这样的,POSIX 要求当连接被第二方正确关闭时,如果套接字上没有更多消息,
recv()
它应该返回0
. 这应该用作连接完成的指示。实际上,
0
它可能会在其他情况下返回(请参阅您的协议的系统文档),例如:recv
中传递了一个长度为零的缓冲区