我有簡單的服務器客戶端應用程序。C++ asio socket從服務器讀取答案
idia是: 客戶端用sql-request發送到服務器字符串。 服務器處理該請求,並在客戶端應答中發送格式爲csv樣式字符串的數據。
一切已調整接受一件事。問題是閱讀客戶端的答案,因爲我不知道收到的字符串的大小。
代碼爲波紋管:
服務器:
std::string answer;
answer = sql_read(*msg); //get the string with data from request
clientSock->write_some(buffer(answer, answer.size())); //send it back on client
客戶:
std::string answer;
bytesRead = sock->read_some(boost::asio::buffer(readBuf, inputSize)); //read the answer, but how do I know correct size of string?
string_ptr msg(new std::string(readBuf, bytesRead));
answer = *msg;
如何閱讀不知道它的大小生成的字符串? 或者如果我的aproach(用字符串發送數據)從根本上錯誤的如何以正確的方式做到這一點?
提示:'clientSock-> write_some()'可能不會寫入所有數據。您必須檢查返回值並在循環中調用它。阿西奧有一個輔助功能來避免這種不便。例如:'boost :: asio :: write(sock,boost :: asio :: buffer(answer));'。 –