Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用一个tcp套接字的多个请求_C++_Sockets_Boost - Fatal编程技术网

C++ 使用一个tcp套接字的多个请求

C++ 使用一个tcp套接字的多个请求,c++,sockets,boost,C++,Sockets,Boost,我正在学习socket编程(和c++)。我编写了一个函数,如下所示,它请求数组的和(使用boost库): std::future AsyncClient::ReqSum(const std::vector&numbers) { 返回std::async( std::launch::async, [&,数字]() { //设置连接。 boost::asio::io\u service\u ioservice; tcp::socket _socket(_ioservice); _socket.con

我正在学习socket编程(和c++)。我编写了一个函数,如下所示,它请求数组的和(使用boost库):

std::future AsyncClient::ReqSum(const std::vector&numbers)
{
返回std::async(
std::launch::async,
[&,数字]()
{
//设置连接。
boost::asio::io\u service\u ioservice;
tcp::socket _socket(_ioservice);
_socket.connect(m_端点);
std::string requestJson=Serializer::ArraySumRequest(数字);
boost::system::error\u code err;
while(true)
{
boost::asio::write(_socket,boost::asio::buffer(requestJson),err);
如果(错误)
{
std::stringstream-ss;

ss看起来您正在尝试从服务器接收所有数据:

boost::asio::streambuf receiveBuffer;
boost::asio::read(_socket, receiveBuffer, boost::asio::transfer_all(), err);
read()
命令完成的唯一方法是服务器指示流的结束。由于您第一次收到有效响应,这意味着服务器在向您发送响应后立即关闭连接

boost::asio::streambuf receiveBuffer;
boost::asio::read(_socket, receiveBuffer, boost::asio::transfer_all(), err);