0

对于非阻塞数据报套接字,如 UDP,当我在套接字上调用 write()/send() 时,如果要写入的字节是 1000 字节,但如果我写得太频繁,也许 write(send) 缓冲区是不够,例如,只有 200 字节的缓冲区可用。那么我会写 200 字节还是 0 字节?返回的错误是 EAGAIN 还是任何其他错误?

对于套接字上的 read()/recv(),它们的每次调用都只会返回 1 个数据报,是吗?

谢谢!

4

1 回答 1

1

如果要写入的字节为 1000 字节,但如果我写得太频繁,可能写入(发送)缓冲区不够,例如,只有 200 字节缓冲区可用。那么我会写 200 字节还是 0 字节?

零。

返回的错误是 EAGAIN 还是任何其他错误?

EAGAINEWOULDBLOCK取决于您的平台。

读()怎么样?

它将返回一个完整的 UDP 数据报或零。

这是 UDP 的主要属性。

于 2013-06-17T08:29:16.447 回答