2012-05-17 79 views
6

我一直在学习UDP套接字,最近浏览网络和解释它的所有网页都提到UDP套接字是“连接少“。这一点,如果我理解正确,意味着两个套接字之间没有“连接”,而是将数据报封包发送到指定的端点,而不知道另一端是否在监听。连接上“连接少”boost :: asio :: ip :: udp :: socket

那我走了,并开始阅读了boost :: ASIO ::知识产权:: UDP ::插座docs,并发现它提到API,如:

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

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

  1. 我失去了一些东西
  2. 的ASIO实现做幕后的东西,虚拟化连接。
  3. 的文件是错误的

还有在文档轻微毛刺,当你打开页面basic_datagram_socket::async_connect的例子中有实例TCP套接字(而不是UDP的)。

有人请赐教吗?

回答

11

统一UNIX规范有对无连接的插座什么connect做一个更好的解释:

如果发起的插座不连接的模式,那么connect()设置套接字的同行地址,但不连接已完成。对于SOCK_DGRAM套接字,对等地址标识所有数据报在后续send()调用中发送的位置,并限制远程发送器用于后续recv()调用。

+0

+1,如果不明显,这是原始问题中的#1混淆。 –