【发布时间】:2016-11-17 10:26:22
【问题描述】:
我在网上阅读了一些关于套接字编程的资料。默认情况下,write() 处于阻塞状态。在某些材料中,write() 仅在套接字缓冲区已满时才会阻塞。其他一些资料说write() 被阻塞,直到用户缓冲区中的所有数据都已移动到系统缓冲区,这意味着如果没有足够的空间放置数据,write() 也会阻塞。我想知道如果 write() 设置为阻塞,哪个语句是正确的。
【问题讨论】:
-
是哪个socket?窗户?
-
@o_weisman 感谢您的回复。 Linux 系统。
-
我建议您将有问题的操作系统添加为标签。
-
Linux 手册页建议这将写入可以写入缓冲区的数据量,并在数据写入后返回,即使只有部分数据可以放入套接字缓冲区,但我相信这取决于特定系统/套接字的实际实现。
-
你描述的阻塞
write的两种行为听起来和我一样。你能详细说明一下会有什么不同吗?有没有你可以运行的实验来证明这种差异?