连接"少连接"boost :: asio :: ip :: udp :: socket

Pet*_*iak 7 networking udp boost-asio

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

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

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

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

  1. 我错过了什么
  2. asio实现在幕后做一些事情来虚拟化连接.
  3. 文档错了

当你打开basic_datagram_socket :: async_connect的页面时,文档中也有一个小故障,例子中有实例化的TCP套接字(而不是UDP套接字).

有人请赐教吗?

cme*_*erw 11

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

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