2012-05-17 81 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混淆。 –