我可以从 pcap/tcpdump 确定 EWOULDBLOCK/EAGAIN 情况吗

我可以从 pcap/tcpdump 确定 EWOULDBLOCK/EAGAIN 情况吗

有什么方法可以确定某条消息是否导致发送数据包的服务器返回 EWOULDBLOCK/EAGAIN 代码?

  • 服务器正在向客户端发送消息
  • 在时间 10,服务器发送了消息 100
  • 在时间 20 时,服务器发送了最多 200 条消息。尚未收到来自客户端的确认。(我猜想这是因为传出数据缓冲区仍然可用)
  • 在时间 21,客户端发送了对消息 150 的确认
  • 在时间 30 时,服务器已发送最多 300 条消息
  • 在时间 31,客户端发送对消息 199 的确认
  • 在时间 32 时,服务器发送 301,之后一段时间不再发送消息。
  • 在时间 35 时,服务器发送 302 及后续内容,尽管我可以确认 302 是在 301 之后立即生成的,没有延迟。

我想确认这是否是由于服务器在发送 302 时获取了 EWOULDBLOCK

答案1

如果发送方在尝试向网络发送时收到 EWOULDBLOCK 或 EAGAIN 错误之一,则不会发送任何内容。然后您可以确定网络上存在数据包表明发送方未收到这些错误。

相关内容