Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用tcp套接字将大型文件从Java客户端发送到C++;服务器 我写的是一个C++程序,它通过java客户端从socket接收文件。 我试图发送的文件大小为510KB,但服务器只接收46KB,然后陷入“等待”更多字节的状态_Java_C++_Sockets_Boost Asio - Fatal编程技术网

无法使用tcp套接字将大型文件从Java客户端发送到C++;服务器 我写的是一个C++程序,它通过java客户端从socket接收文件。 我试图发送的文件大小为510KB,但服务器只接收46KB,然后陷入“等待”更多字节的状态

无法使用tcp套接字将大型文件从Java客户端发送到C++;服务器 我写的是一个C++程序,它通过java客户端从socket接收文件。 我试图发送的文件大小为510KB,但服务器只接收46KB,然后陷入“等待”更多字节的状态,java,c++,sockets,boost-asio,Java,C++,Sockets,Boost Asio,这是服务器代码:(我试图一次接收510KB,但服务器卡住了,所以我也试图每次迭代接收64KB,服务器再次卡住) 注意:发送1KB文件时,一切正常 为什么会发生这种情况?我如何修复它?任何帮助都将不胜感激 编辑:使用boost接收大数据的任何其他方式都将受到欢迎。如果读取代码卡住,则故障可能在发送代码中。张贴它。注意:发送文件不需要将整个文件读入内存。将文件加载到字符串中,然后使用writeBytes()发送字符串需要两个字符转换,这可能会损坏数据。字符串不是二进制数据的容器。 int bytes

这是服务器代码:(我试图一次接收510KB,但服务器卡住了,所以我也试图每次迭代接收64KB,服务器再次卡住)

注意:发送1KB文件时,一切正常

为什么会发生这种情况?我如何修复它?任何帮助都将不胜感激


编辑:使用boost接收大数据的任何其他方式都将受到欢迎。

如果读取代码卡住,则故障可能在发送代码中。张贴它。注意:发送文件不需要将整个文件读入内存。将文件加载到字符串中,然后使用writeBytes()发送字符串需要两个字符转换,这可能会损坏数据。字符串不是二进制数据的容器。
int bytes_to_receive;
size_t length;
while(file_length > 0)
{
    if(file_length >= 65536)
        bytes_to_receive = 65536;
    else
        bytes_to_receive = file_length;
    char buf5[bytes_to_receive];
    length = 0;
    while( length < bytes_to_receive )
        length += socket.read_some(boost::asio::buffer(&buf5[length], bytes_to_receive - length), error);

    string temp(buf5);
    file_parts.push_back(temp);
    file_length -= bytes_to_receive;
}

string file("");
vector<string>::const_iterator it;
for(it = file_parts.begin(); it != file_parts.end(); ++it)
{
    file += *it;
}
writeBytes