簡體   English   中英

Boost套接字 - 客戶端沒有從服務器接收所有字節

[英]Boost sockets - client is not receiving all bytes from server

我正在使用C ++開發一個應用程序,並且在使用boost套接字時遇到了一些困難。 服務器發送圖像,但客戶端不接收所有字節; 客戶端總是收到比服務器發送的少500個字節。 下面提供了運行程序的相關代碼和屏幕截圖。

服務器代碼:

int sent = boost::asio::write(*socket, response, boost::asio::transfer_all(), error);
std::cout << "Sent: " << sent << std ::endl;

客戶端代碼(我知道如果服務器發送的總字節數可以被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;

服務器截圖: 服務器截圖

客戶截圖: 客戶端截圖

謝謝你的時間; 任何幫助或建議將不勝感激。

無法保證您將收到10000字節的完整緩沖區。

我建議采用以下方法:

要發送一些沒有任何顯式終結符的二進制數據,首先發送它的大小,然后發送數據本身。 在這種情況下,客戶端將知道它應該接收的這個塊中有多少數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM