这是一个使用boost :: asio的示例echo客户端,我不明白的是read()函数的第三个参数,它是一个绑定read_complete函数的绑定函数,但它不传递bytes参数(_1或者_2?),在read_complete中我们将使用这个bytes参数。那么,read_complete函数如何工作呢?
size_t read_complete(char *buf, const error_code &err, size_t bytes)
{
if (err)
return 0;
bool found = std::find(buf, buf+bytes, '\n') < buf + bytes;
// we read one-by-one until we get to enter, no buffering
return found? 0: 1;
}
void sync_echo(std::string msg)
{
...
int bytes = read(sock, buffer(buf), boost::bind(read_complete, buf, _1, _2));
...
}