Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 使用Boost.Asio可以并发运行哪些套接字发送/接收操作_Sockets_Tcp_Udp_Boost Asio - Fatal编程技术网

Sockets 使用Boost.Asio可以并发运行哪些套接字发送/接收操作

Sockets 使用Boost.Asio可以并发运行哪些套接字发送/接收操作,sockets,tcp,udp,boost-asio,Sockets,Tcp,Udp,Boost Asio,我知道可以在TCP和UDP套接字上同时运行异步发送和异步接收操作。但在这些情况下,预期的行为是什么: 在UDP套接字上同时调用两个异步发送操作 在UDP套接字上并发调用两个异步接收操作 在TCP套接字上同时调用两个异步发送操作 在TCP套接字上并发调用两个异步接收操作 我主要对第一个案例感兴趣;由于UDP不一定保留发送数据包的顺序,因此我不太关心它们的发送顺序是否与调用async_send的顺序不同 在没有增压ASIO的情况下也会发生同样的事情: 在UDP套接字上同时调用两个异步发送操作 两个数

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

  • 在UDP套接字上同时调用两个异步发送操作
  • 在UDP套接字上并发调用两个异步接收操作
  • 在TCP套接字上同时调用两个异步发送操作
  • 在TCP套接字上并发调用两个异步接收操作

  • 我主要对第一个案例感兴趣;由于UDP不一定保留发送数据包的顺序,因此我不太关心它们的发送顺序是否与调用async_send的顺序不同

    在没有增压ASIO的情况下也会发生同样的事情:

    在UDP套接字上同时调用两个异步发送操作

    两个数据报都将被发送

    在UDP套接字上并发调用两个异步接收操作

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

    在TCP套接字上同时调用两个异步发送操作

    数据可能不可预测地交织

    在TCP套接字上并发调用两个异步接收操作


    数据可能会不可预测地交错。

    谢谢,这正是我所希望的。由于(正如您的回答所暗示的那样)ASIO知道这种用法,我想问的下一个问题是,POSIX和Win套接字是否都能保证这种行为。@PeterJankuliak我不确定他们是否能正式保证,但我所知道的每个实现都有这种可靠的行为。