是否有任何直接命令来检测对等方是否在发送前关闭/关闭其套接字?
我这样做:
int sendResult = send( mySD, bufferPtr, numberToSend, MSG_NOSIGNAL );
send()
确实很乐意接受消息并似乎发送它(正返回值),只有在我下次尝试发送它时才会返回错误。这意味着:我收到警告 1 消息太晚了。
是的,我select()
事先使用过,但即使对等方已关闭,它仍然返回 1。
recv()
作为一种解决方法,我可以在调用之前直接执行 0 字节读取send()
,这会告诉我“连接正常”(-1)或“对等关闭”(0),并且几乎可以完成这项工作:
int readTest = recv( mySD, NULL, 0, MSG_DONTWAIT | MSG_PEEK );
但是从语义的角度来看,当我真正想要发送时,它确实“感觉”错了,我真正想要的只是一个测试。那么是否有诸如“套接字状态”之类的命令,我可以直接找出我需要什么?内部使用的那种东西recv()
?