什么套接字发送/ recv操作可以使用Boost.Asio并发运行

时间:2014-07-28 15:40:34

标签: sockets tcp udp boost-asio

我知道可以在TCP和UDP套接字上同时运行async_send和async_receive操作。但是在这些情况下的预期行为是什么:

  1. 在UDP套接字上同时调用两个async_send操作。
  2. 在UDP套接字上同时调用两个async_receive操作。
  3. 在TCP套接字上同时调用两个async_send操作。
  4. 在TCP套接字上同时调用两个async_receive操作。
  5. 我主要对第一种情况感兴趣;因为UDP不一定保留发送数据包的顺序,所以如果它们的顺序与调用async_send的顺序不同,我并不在意。

1 个答案:

答案 0 :(得分:3)

如果没有Boost ASIO,就会发生同样的事情:

  

在UDP套接字上同时调用两个async_send操作。

两个数据报都将被发送。

  

在UDP套接字上同时调用两个async_receive操作。

任意操作将接收下一个数据报,但两个操作都将正常运行。

  

在TCP套接字上同时调用两个async_send操作。

数据可能无法预测地交错。

  

在TCP套接字上同时调用两个async_receive操作。

数据可能无法预测地交错。