我想写一个特定数量的字节到一个套接字,
n=write(sock_fd, buf, len);
如果n<len
,我宁愿没有字节写入套接字,是否有可能? 谢谢!
如果套接字处于阻塞模式,则按照EJP(+1)的说法, write()将不会返回,直到len字节被写入套接字的输出缓冲区。
然而,重要的是要注意,这并没有告诉你在接收端有多少字节已经被接收。 实际上,当write()返回没有数据已经发送(还)的时候,对于小的len值。 而当另一端调用read()时 ,它将阻塞,直到有一些数据到达,但不一定是len字节。 如果你想读取len字节,那么你可能不得不继续调用read(),直到获得全部。
知道实际发生了什么以及什么时候完成的唯一真正的方法是从套接字的另一端返回某种消息,以说现在一切都已经到了。 write()的确认返回本身是不够的。