Jus*_*ing 5 c sockets buffer byte tcp
正如标题所说,在面向连接的套接字上一次可以写入的字节数是否有限制?
如果我想发送一个缓冲区,例如1024字节,我可以使用a
write(tcp_socket, buffer, 1024);
Run Code Online (Sandbox Code Playgroud)
或者我应该write()为每个使用较少字节数的多个调用?
write()不保证将写入所有字节,因此需要多次调用write().从男人写:
如果,例如,底层物理介质上没有足够的空间,或者遇到RLIMIT_FSIZE资源限制(请参阅setrlimit(2)),或者调用被信号处理程序中断后,写入的字节数可能小于count写得少于计数字节.(另见管道(7).)
write()返回写入的字节数,因此必须保留写入的字节的运行总数,并将其用作索引buffer并计算要写入的剩余字节数:
ssize_t total_bytes_written = 0;
while (total_bytes_written != 1024)
{
assert(total_bytes_written < 1024);
ssize_t bytes_written = write(tcp_socket,
&buffer[total_bytes_written],
1024 - total_bytes_written);
if (bytes_written == -1)
{
/* Report failure and exit. */
break;
}
total_bytes_written += bytes_written;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12766 次 |
| 最近记录: |