2012-02-19 34 views
0

我有一個非常簡單的問題,我似乎無法找到任何地方的答案:綁定() - 荷蘭國際集團UDP套接字到不同的地址

使用Linux下C座,是可以綁定(),然後recvfrom的( )除本地地址外的IP地址上的UDP數據包?

也就是說,如果一臺主機被賦予了局域網地址10.0.0.4,並且我希望它能夠接收發送到端口5505上的地址10.0.0.5的UDP數據包(例如),這將如何實現?

我根本找不到任何使用bind/recvfrom的例子,這看起來應該是相當普遍的。

更新

我試圖傳達的信息包中的多個主機之間的數據流。每個主機在自己的地址上傳輸UDP數據包,其他任何主機都可以通過recvfrom()訪問特定的地址。

+0

目前還不清楚你在這裏問什麼......這裏的交通流量是什麼?誰在發送?誰在閱讀?你有一臺機器在中間? – EdwardH 2012-02-19 19:39:25

+3

你不應該使用多播地址嗎? – ninjalj 2012-02-19 19:39:31

+0

多播或甚至本地廣播。 – 2012-02-19 19:47:33

回答

1

不,一般不能綁定到非本地單播地址。在以太網上,這些數據包將被尋址到該IP地址所有者的硬件地址,並且默認情況下,NIC甚至不會將這些數據包轉發給您的內核。

您可以使用IP多播實現您想要的效果。您將爲您的應用選擇一個特定的多播地址並綁定到該地址,然後使用套接字選項IP_ADD_MEMBERSHIP加入多播組。然後您可以通常的方式使用recvfrom()

相關問題