Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
C++ 同步HTTPS POST与Boost Asio_C++_Sockets_Http_Boost_Boost Asio - Fatal编程技术网

C++ 同步HTTPS POST与Boost Asio

C++ 同步HTTPS POST与Boost Asio,c++,sockets,http,boost,boost-asio,C++,Sockets,Http,Boost,Boost Asio,使用普通套接字通过HTTP上传10 MB文件时,一切正常: 字符串文件名(“c:\\test.zip”); long fileSize=boost::filesystem::file_size(文件名); //将文件读入内存 文件*文件指针; fopen_s(&filePointer,filename.c_str(),“rb”); 唯一字符(新的无符号字符[1024*1024*20]); fseek(filePointer,0,SEEK_SET); fread_s(charArray.get()

使用普通套接字通过HTTP上传10 MB文件时,一切正常:

字符串文件名(“c:\\test.zip”);
long fileSize=boost::filesystem::file_size(文件名);
//将文件读入内存
文件*文件指针;
fopen_s(&filePointer,filename.c_str(),“rb”);
唯一字符(新的无符号字符[1024*1024*20]);
fseek(filePointer,0,SEEK_SET);
fread_s(charArray.get(),1024*1024*20,sizeof(unsigned char),fileSize,filePointer);
//安装插座
boost::asio::io_服务io_服务;
tcp::端点ep;
ep.端口(90);
ep.address(boost::asio::ip::address_v4::from_string(“127.0.0.1”);
shared_ptr httpSocket=使_共享(io_服务);
httpSocket->connect(ep);
字符串前缀=“--”;
//使用GUID作为边界
字符串边界=boost::uuids::to_字符串(boost::uuids::random_生成器());
字符串换行符=“\r\n”;
int NEWLINE_LENGTH=NEWLINE.LENGTH();
//计算整个HTTP请求的长度-进入标头
long lengthOfRequest=0;
lengthOfRequest+=前缀.length()+边界.length()+换行符长度;
lengthOfRequest+=string(“内容配置:表单数据;名称=\“fmChunk\”文件名=\“test.zip\”).length();
lengthOfRequest+=换行符长度+换行符长度;
lengthOfRequest+=文件大小;
lengthOfRequest+=换行符长度+前缀.LENGTH()+边界.LENGTH()+前缀.LENGTH()+换行符长度;
boost::asio::streambuf请求;
std::ostream请求\u流(&request);

请求\u流首先-很抱歉复制/粘贴错误。现在已经纠正了

不管怎么说,问题是我每次都在向套接字写入(1024*100)字节,这对于sslSocket来说太多了,而对于httpSocket来说效果很好。将其减少到1024就解决了这个问题

我真的应该检查sslSocket.write\u方法的返回值,以确保写入了预期的字节数


您的样本可能未粘贴副本。您的问题中根本没有使用
sslSocket
的代码。同时,这可能会有所帮助