有什么方法可以确定某条消息是否导致发送数据包的服务器返回 EWOULDBLOCK/EAGAIN 代码?
- 服务器正在向客户端发送消息
- 在时间 10,服务器发送了消息 100
- 在时间 20 时,服务器发送了最多 200 条消息。尚未收到来自客户端的确认。(我猜想这是因为传出数据缓冲区仍然可用)
- 在时间 21,客户端发送了对消息 150 的确认
- 在时间 30 时,服务器已发送最多 300 条消息
- 在时间 31,客户端发送对消息 199 的确认
- 在时间 32 时,服务器发送 301,之后一段时间不再发送消息。
- 在时间 35 时,服务器发送 302 及后续内容,尽管我可以确认 302 是在 301 之后立即生成的,没有延迟。
我想确认这是否是由于服务器在发送 302 时获取了 EWOULDBLOCK。
答案1
如果发送方在尝试向网络发送时收到 EWOULDBLOCK 或 EAGAIN 错误之一,则不会发送任何内容。然后您可以确定网络上存在数据包表明发送方未收到这些错误。