recv()windows socket函数没有接收整个缓冲区

时间:2013-06-01 18:13:48

标签: c winsock2

我正在开发Windows上的服务器客户端应用程序。 当发送的消息非常小(大约20-30KB)时,我的程序工作得很好。 但是,当发送的缓冲区大小超过50 KB时,程序无法正常工作。 我注意到send()函数发送了我想要的确切字节数。但是recv功能并没有那么多。我假设网络内部可能已经破坏了缓冲区。但是,在多次recv()调用后,我不应该能够接收整个缓冲区吗? 我通过TCP发送缓冲区,所以理想情况下应该保证我收到整个消息。 当我发送50KB或更高的缓冲区时,我在第一个recv()中得到大约16KB,但是下次调用recv()时我得到一个空缓冲区。为什么消息会丢失?有没有办法得到它?它仅适用于大于50KB的缓冲区。

我使用Windows套接字库在C中编码。

0 个答案:

没有答案