gpt4 book ai didi

C++ asio 套接字从服务器读取答案

转载 作者:行者123 更新时间:2023-11-30 05:21:45 26 4
gpt4 key购买 nike

我得到了简单的服务器-客户端应用。

idia 是:客户端使用 sql 请求发送到服务器字符串。服务器处理请求并使用 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;

如何在不知道其大小的情况下读取结果字符串?或者,如果我的方法(以字符串形式发送数据)完全错误,如何以正确的方式进行?

最佳答案

您必须在客户端和服务器用于相互通信的协议(protocol)中自行处理此问题。

一种方法是使用分隔符并使用 boost::asio::read_until()。示例:

boost::asio::streambuf buf;
boost::asio::read_until (sock, buf, "\r\n"); // or '\0' if zero terminated

Check the Boost.Asio documentation .

另一种方法是在发送可变长度部分之前先在固定长度的 header 中发送大小。

关于C++ asio 套接字从服务器读取答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39966512/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com