连接“少连接”boost :: asio :: ip :: udp :: socket

时间:2012-05-17 22:01:02

标签: networking udp boost-asio

我最近通过浏览网络了解UDP套接字,所有解释它的网页都提到UDP套接字是“少连接”。这个,如果我理解正确意味着一个人在两个套接字之间没有“连接”,而是将数据报包发送到指定的端点,而不知道另一端是否在监听。

然后我开始阅读boost :: asio :: ip :: udp :: socket docs并发现它提到了API:

  • async_connect:启动异步连接
  • async_receive:在连接的套接字上启动异步接收
  • async_send:在连接的套接字上启动异步发送

现在这对新手来说有点混乱。我可以找到3个可能的原因导致我的困惑(按照相似的顺序:) :)

  1. 我错过了什么
  2. asio实现在幕后做了一些虚拟连接的事情。
  3. 文档错误
  4. 当您打开basic_datagram_socket::async_connect的页面时,文档中也存在轻微的故障,例如,实例化 TCP 套接字(而不是 UDP 那些)。

    有人请赐教我吗?

1 个答案:

答案 0 :(得分:11)

Single UNIX规范更好地解释了connect对无连接套接字的作用:

  

如果启动套接字不是连接模式,则connect()设置套接字的对等地址,但不进行连接。对于SOCK_DGRAM套接字,对等地址标识在后续send()调用中发送所有数据报的位置,并限制远程发送方以用于后续的recv()调用。