2013-02-26 79 views
0

我正在编写C客户机 - 服务器应用程序。C - 通过TCP发送缓冲区的合适大小

双方为了沟通交换字符缓冲区。

这些缓冲区的大小是多少?
在面向流的套接字上是否存在read()(或write())可读(或可写)的字节数限制?

回答

2

只要您正确编写代码,只要保持连接就没有限制。这就是流连接的含义。

只要记住write()read()都可以在它们写入/读取您提供/询问的所有数据之前返回。在这种情况下,返回值告诉你已经写/读了多少,并且你有责任再次调用函数来进行写/读操作。

2

这取决于您是否瞄准高吞吐量或低延迟。高吞吐量的大缓冲区和低延迟的小缓冲区。还要注意的是,当发送带有x字节的缓冲区时,读写功能不保证发送所有的x字节。确保检查返回值,看看有多少个字节被发送/接收,继续发送/接收剩余的数据(这通常是用一个while循环完成的,直到您发送/接收整个缓冲区大小x为止)。