0
我目前正在使用Boost ASIO在客户端服务器TCP/IP应用程序上工作。 客户端使用下面的语句从客户端接收数据时出现异常 - “文件结尾”错误
boost::system::error_code ignored_error;
boost::asio::write(socket, boost::asio::buffer("Hello World\0"), ignored_error);
服务器读取此数据作为这样的将数据发送到服务器(从非同步。读取)
boost::asio::async_read(*sock, boost::asio::buffer(buf_server),boost::bind(&ServerRead,boost::asio::placeholders::error));
这里就是读数完成
boost::array<char, 158> buf_server;
void ServerRead(const boost::system::error_code& error)
{
if(!error)
{
std::cout << "Message: " << buf_server.data() << std::endl;
}
else
{
std::cout << "Error occurred." << error.message() << std::endl;
}
}
但是,我收到错误“文件结束”。 所以现在我有两个问题
我该如何解决这个问题。我在这里做错了什么?
假设我的
buf_server
只有5个字符而不是158.我怎样才能让我的接收器使用这个缓冲区只读取整个数据而std::cout
呢?