簡體   English   中英

連接一個 UDP 套接字,但仍然接收來自其他來源的數據報

[英]Connect a UDP socket, but still receive datagrams from other sources

是否可以像connect一樣設置 UDP 套接字的默認目標,但不會失去從其他來源接收數據報的能力?

我說的是本機操作系統套接字 API(BSD-socket / winsock2),我對 linux 和 windows 平台的答案感興趣。

[編輯:]
如果不清楚,這是連接文檔中的問題部分:

如果套接字 sockfd 是 SOCK_DGRAM 類型,那么 addr 是默認發送數據報的地址,也是接收數據報的唯一地址。

是否可以像 connect 一樣設置 UDP 套接字的默認目標,但不會失去從其他來源接收包的能力?

據我所知,它不是 - UDP 套接字上的connect()既設置了默認發送目標安裝了過濾器,以便從除指定地址/端口之外的所有其他目標傳入的 UDP 數據包被丟棄。

我對該問題的解決方案是只調用sendto()recvfrom() (如果您的代碼庫中有UDPSocket class 或類似的,您可以將默認發送地址緩存為該 class 中的私有成員變量,以便您的代碼庫的 rest 可以只調用Send()方法,並將其留給該方法來處理sendto()參數)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM