我有一些简单的问题,我有一个客户端服务器应用程序和数据在电线上发送。C++异步网络编程
我希望能够恢复数据并正确处理它。
struct T1
{
int id;
int foo;
};
struct T2
{
int id;
char foo;
int bar;
};
让我们这些结构,它们是由一个int,这将告诉我们,如果T1或T2如下之前发送到网络上。 如果客户端向我发送T1,然后发送给我T2,我有保证可以使用asio :: ip :: tcp :: socket.async_read()读取完整的结构吗? 我想设置一个将处理单个结构的处理程序,但是如果我无法在单个async_read()中读取所有内容,会发生什么?
异步操作将 持续到以下 条件之一为真:
- 所提供的缓冲器满了。也就是说,传输的字节数等于缓冲区大小的总和。
- An error occurred。
它会丢弃无法读取的数据吗?它会触发另一个async_read? 而且,如果我的客户端顺序发送ID +结构,我确信async_read只会获得一个ID +结构吗?或者操作系统可以优化它们并将它们放在同一个paquet中?正如你可能看到的,我有点困惑,我想在设计服务器/客户端应用程序时作出正确的决定,任何帮助将不胜感激。
谢谢。
你说的是async_read_some的行为。直到缓冲区已满或发生错误,async_read才会完成。 – Timo 2010-11-25 01:32:32