我正在为文件传输应用程序开发服务器。文件从安卓手机发送到我的服务器。
当文件大小较小时,它可以顺利运行。但是当文件很大(>2MB)时,服务器不会接收到整个数据包。
int recv(
_In_ SOCKET s,
_Out_ char *buf,
_In_ int len,
_In_ int flags
);
len
函数中的值最初recv
设置为20000
,当我将其更改为 时8000
,它开始工作。
令人惊讶的是,这只发生在Release mode in Visual Studio.
我使用wireshark 从我的移动设备中捕获日志。当服务器运行在调试模式时,手机会发送所有数据,但是当服务器运行在发布模式时,手机不会发送全部数据。(这是 len 的值设置为 的时候20000
)。
但是,如果我通过基于 PC 的客户端发送大文件(客户端与服务器在同一台机器上),则值len
可以保持在 20000。
有没有人遇到过这样的问题?这种行为的原因是什么?
注意:我正在使用 Visual Studio 在 Windows 上进行开发。