0

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

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

4

0 回答 0