boost :: asio :: async_read_until - 直到发送了四条消息才读取

时间:2012-06-15 02:47:35

标签: c++ boost boost-asio

我正在尝试通过编写一个将字符串发送到echo服务器的简单客户端来学习boost :: asio。我已经使用telnet测试了echo服务器并且它运行良好,但我的boost :: asio客户端表现得很奇怪。 async_read_until似乎没有读取/调用处理程序,直到发送了四个消息(并由echo服务器返回)。客户端的输出可能更好地解释了这一点(我在每个值之后删除了换行符):

gurka@x:~/private/code/test$ ./test localhost 2001
Hostname resolved.
Connected to server.
Starting write
Starting read_until
Writting[1]
Writting[2]
Writting[3]
Writting[4]
Read[1]
Writting[5]
Read[2]
Writting[6]

连接完成后,我有两个电话:

boost::asio::async_write(mSocket, mOutgoingBuffer, boost::bind(&Connection::writeToServer, this, boost::asio::placeholders::error));

boost::asio::async_read_until(mSocket, mIncomingBuffer, "\n", boost::bind(&Connection::readFromServer, this, boost::asio::placeholders::error));

writeToServer和readFromServer只打印写入/读取及其写入/读取的值,然后再次执行async_write / async_read_until调用,并使用相同的参数。 writeToServer将消息从队列中发送,我已经填充了“1 \ n”..“6 \ n”。

我认为错误不在echo服务器中,因为我可以看到它按顺序读取和写回所有6个值。正如我之前所说,它使用telnet完美运行。那么,为什么async_read_until被4条消息“延迟”?我已经尝试发送更长的字符串,这是一回事。

0 个答案:

没有答案