【发布时间】:2012-02-11 00:18:48
【问题描述】:
当通过调用select() 指示套接字可以写入时,我如何知道可以发送多少数据而不阻塞? (在完整发送缓冲区等的情况下)
包含在select() 返回的集合中是否表示套接字已准备好接收至少一个字节的数据,并且send() 然后会返回一小段写入字节数?
或者当我使用大于可用缓冲区空间的len 参数调用send() 时它会阻塞吗?如果是,我怎么知道最大金额?
我在 Linux 上使用常规 C 套接字。
【问题讨论】:
-
如果您的 API 支持它,您可以使用
SO_SNDLOWAT选项。这样您就可以选择需要可写的最小字节数。