【发布时间】:2018-12-17 05:01:03
【问题描述】:
我想更好地理解非阻塞send 到套接字的实现。
鉴于我使用非阻塞套接字,并使用字符缓冲区“buf”发送数据,send 返回 EAGAIN 错误。我可以假设“buf”内容被复制到 POSIX 框架/网络堆栈中的内部缓冲区,我可以使用“buf”将新数据发送到套接字或EAGAIN 表示“buf”中的数据稍后将被复制,因此不应该更改“buf”内存?
我对此进行了很多搜索,但没有找到明确的答案。
对于aio_write,我在手册页中找到了以下注释:
被写出的缓冲区不能被访问 在操作期间或可能出现未定义的结果。记忆 涉及的区域必须保持有效。
但对于非阻塞我没有找到类似的东西。
谢谢。
【问题讨论】:
-
EAGAIN 中的 E 代表错误。 EGAIN 是一个错误。这意味着发送任何东西都没有(甚至不是部分)成功。您应该使用相同的参数再次尝试。
标签: linux network-programming posix send nonblocking