gpt4 book ai didi

boost - 如何使用 boost.asio 创建一个简单的服务器/客户端应用程序?

转载 作者:行者123 更新时间:2023-12-04 06:53:48 24 4
gpt4 key购买 nike

我正在查看 boost.asio 的示例,我想知道为什么没有一个简单的服务器/客户端示例的示例,该示例在服务器上打印一个字符串,然后将响应返回给客户端。
我试图修改回声服务器,但我根本不知道我在做什么。
谁能帮我找到客户端模板和服务器模板?
我想最终创建一个接收二进制数据的服务器/客户端应用程序,并只向客户端返回收到数据的确认。
编辑:

void handle_read(const boost::system::error_code& error,
size_t bytes_transferred) // from the server
{
if (!error)
{
boost::asio::async_write(socket_,
boost::asio::buffer("ACK", bytes_transferred),
boost::bind(&session::handle_write, this,
boost::asio::placeholders::error));
}
else
{
delete this;
}
}

这仅向客户端返回“A”。
同样在 data_ 中,我在响应本身之后得到了很多奇怪的符号。
这些都是我的问题。
编辑2:
好的,所以主要问题出在客户端。
size_t reply_length = boost::asio::read(s,
boost::asio::buffer(reply, request_length));

因为它是一个回显服务器,'ACK' 只会在请求长度超过 3 个字符时出现。
我如何克服这个问题?
我尝试将 request_length 更改为 4 但这只会让客户端等待而根本不做任何事情。

最佳答案

最终我发现问题出在服务器中的这段代码中:

void handle_read(const boost::system::error_code& error,
size_t bytes_transferred) // from the server
{
if (!error)
{
boost::asio::async_write(socket_,
boost::asio::buffer("ACK", 4), // replaced bytes_transferred with the length of my message
boost::bind(&session::handle_write, this,
boost::asio::placeholders::error));
}
else
{
delete this;
}
}

在客户端:
size_t reply_length = boost::asio::read(s,
boost::asio::buffer(reply, 4)); // replaced request_length with the length of the custom message.

关于boost - 如何使用 boost.asio 创建一个简单的服务器/客户端应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2759062/

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