tod*_*odd 4 c++ networking boost boost-asio
我正在使用C++开发一个应用程序,并且在使用boost套接字时遇到了一些困难.服务器发送图像,但客户端不接收所有字节; 客户端总是收到比服务器发送的少500个字节.下面提供了运行程序的相关代码和屏幕截图.
服务器代码:
int sent = boost::asio::write(*socket, response, boost::asio::transfer_all(), error);
std::cout << "Sent: " << sent << std ::endl;
Run Code Online (Sandbox Code Playgroud)
客户端代码(我知道如果服务器发送的总字节数可以被10000整除,read_some将阻塞;此代码仅用于测试):
int len = 0;
int count = 0;
do {
len = socket->read_some( boost::asio::buffer( imageData, 10000 ) );
count += len;
std::cout << "len: " << len << std::endl;
std::cout << "count: " << count << std::endl;
} while(len == 10000);
std::cout << "Image Received of size: " << count << std::endl;
Run Code Online (Sandbox Code Playgroud)
服务器截图:

客户截图:

谢谢你的时间; 任何帮助或建议将不胜感激.
无法保证您将收到10000字节的完整缓冲区.
我建议采用以下方法:
要发送一些没有任何显式终结符的二进制数据,首先发送它的大小,然后发送数据本身.在这种情况下,客户端将知道它应该接收的这个块中有多少数据.
| 归档时间: |
|
| 查看次数: |
617 次 |
| 最近记录: |