Linux TCP堆栈-对等重置或断开连接的通知

Linux TCP堆栈-对等重置或断开连接的通知,linux,tcp,notifications,reset,disconnect,Linux,Tcp,Notifications,Reset,Disconnect,我有一个情况- 处于已建立状态的-->B之间存在TCP连接。A向B发送几个字节,然后自行终止。B既没有执行send()也没有执行recv() 我想知道是否有办法知道连接断开。 我知道,对于断开的连接,recv()返回“0”。但是在上述情况下-A已经向B发送了一些数据,因此第一个(一个或多个)recv()将返回发送的数据,最后我将得到recv()==0。但我想知道断开的连接,而不必从recv缓冲区中抽出所有数据 我想获得有关传入FIN/RST数据包的通知 我已经激活了keep alive,因此我希

我有一个情况-

处于已建立状态的-->B之间存在TCP连接。A向B发送几个字节,然后自行终止。B既没有执行send()也没有执行recv()

我想知道是否有办法知道连接断开。

我知道,对于断开的连接,recv()返回“0”。但是在上述情况下-A已经向B发送了一些数据,因此第一个(一个或多个)recv()将返回发送的数据,最后我将得到recv()==0。但我想知道断开的连接,而不必从recv缓冲区中抽出所有数据

  • 我想获得有关传入FIN/RST数据包的通知
  • 我已经激活了keep alive,因此我希望在合作伙伴未重复keep alive数据包时收到通知
  • 谢谢,
    Sandeep

    无论您想在哪里检查实时连接,都可以尝试发送(fd、buf、0、0)即发送0字节的数据。如果连接断开,它将失败

    如果已知连接在此端断开,则可能会失败。例如,如果已经存在重传超时,或者已经接收到RST。此技术不会检测成功传输后刚刚断开的连接。此外。。。当连接断开时,我需要堆栈发出一些“通知”。这种设计不适合通过send()或recv()查询堆栈。@pppsandeep运气不好,TCP中没有这样的东西。