0

我有一个情况-

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

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

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

  1. 我想收到有关传入 FIN/RST 数据包的通知
  2. 我已经激活了 keep-alive,所以我想在伙伴未回复 keep-alive 数据包时收到通知

谢谢,桑迪普

4

1 回答 1

0

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

于 2012-08-27T14:34:16.773 回答