【发布时间】:2010-05-03 15:16:54
【问题描述】:
我正在查看 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));
因为它是一个回显服务器,所以只有在请求长度超过 3 个字符时才会出现“ACK”。
我该如何克服这个问题?
我尝试将 request_length 更改为 4 但这只会让客户端等待并且根本不做任何事情。
【问题讨论】:
标签: boost client client-server boost-asio