我正在编写一个 C 客户端-服务器应用程序。
双方交换char缓冲区以进行通信。
这些缓冲区的合适大小是多少?在面向流的套接字上
是否存在 a read()
(或 a )可读(或可写)的字节数限制?write()
只要您正确编写代码,只要保持连接就没有限制。这就是流连接的含义。
请记住这一点,write()
并且read()
在他们写入/读取您提供/要求的所有数据之前都可以返回。在这种情况下,返回值会告诉您写入/读取了多少,您有责任再次调用该函数以继续写入/读取。
这取决于您的目标是高吞吐量还是低延迟。大缓冲区用于高吞吐量,小缓冲区用于低延迟。另请注意,当发送带有 x 字节的缓冲区时,读取和写入函数不保证发送所有 x 字节。确保检查返回值以查看发送/接收的字节数继续发送/接收其余的(这通常通过 while 循环完成,直到您发送/接收整个缓冲区大小 x)。