【发布时间】:2017-06-07 05:16:58
【问题描述】:
我最近一直在使用 Windows Visual Studio 2015 的 Boost 库。我最近一直在研究可以通过 tcp 连接轻松传输数据的服务器和客户端。但最近我试图向客户端发送一个 Base64 编码的文件字符串,它大约是 366,660 字节的数据。为此,我将数据分成大小约为 1000 的数据包。 (不确定最大大小是多少)但无论如何服务器发送数据完全正常,但是当客户端接收到超过 160,000 个字节时,它会崩溃,无一例外。
客户:
try
{
for (static int i = 1000; i <= sizeofpackets /*(366,660) (currently 170,000 for testing)*/; i += 1000)
{
char Buffer[1000];
memset(Buffer, 0, 1000);
boost::asio::read(s, boost::asio::buffer(Buffer, 1000));
std::cout << i << std::endl;
}
}
catch (std::exception& e)
{
std::cerr << "Exception: " << e.what() << "\n";
}
服务器:
for (int i = 1000; i <= 170000; i += 1000)
{
std::string NewData = encodedBuffer.substr(i - 1000, i);
NewData.erase(0, i - 1000);
boost::asio::write(*sock, boost::asio::buffer(NewData, 1000));
std::cout << NewData.size() + i - 1000 << std::endl;
NewData.clear();
}
任何 cmets 或建议都会有很大帮助!
【问题讨论】:
-
到目前为止,您尝试了哪些方法来确定崩溃的原因?
-
我将其调试为 boost::asio::read 并且每次迭代都会重置缓冲区,所以不确定还要检查什么。
标签: c++ boost tcp boost-asio boost-thread