我最近通过浏览网络了解了 UDP 套接字,所有解释它的页面都提到 UDP 套接字是“无连接”。如果我理解正确的话,这意味着两个套接字之间没有“连接”,而是将数据报包发送到指定的端点,而不知道另一端是否正在侦听。
然后我开始阅读 boost::asio::ip::udp::socketdocs并发现它提到了 API,例如:
- async_connect:启动异步connect.
- async_receive:在 a 上启动异步接收连接的套接字.
- async_send:在 a 上启动异步发送连接的套接字.
对于新手来说,这有点令人困惑。我可以找到 3 个可能导致我困惑的原因(按照可能性的顺序:))
- 我缺少一些东西
- asio 实现正在幕后做一些事情来虚拟化连接。
- 文档有误
当您打开页面时,文档中还有一个小故障basic_datagram_socket::async_connect那里的例子正在实例化TCP套接字(而不是UDP ones).
有人请启发我吗?
Single UNIX 规范对什么有更好的解释connect对于无连接套接字:
如果发起套接字不是连接模式,则 connect() 设置套接字的对等地址,但不会建立连接。对于 SOCK_DGRAM 套接字,对等地址标识在后续 send() 调用中所有数据报发送的位置,并限制后续 receive() 调用的远程发送方。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)