2015-12-24 27 views
0

我建立了一個局域網,路由器的地址是192.168.1.1,我的硬件地址是192.168.1.10,它將UDP數據包發送到192.168.1.105:14455。如何綁定到用於UDP通信的正確地址和端口?

我的電腦也在這個局域網中。其IP地址由路由器隨機分配。我想聽從我的硬件在192.168.1.10發送的數據包。

目前,我將我的PC地址設置爲192.168.1.105並綁定到0.0.0.0:14455。

但是,如果我不綁定到0.0.0.0來偵聽所有地址,那麼我應該綁定哪個地址(x.x.x.x:14455)來偵聽我的硬件?

此外,如果我要求硬件通過網絡進行電視廣播。我應該如何綁定我的電腦(x.x.x.x:14455?)?

回答

0

對於單播,您應該綁定到INADDR_ANY或發件人使用的特定IP地址(僅當PC上的IP數多於IP時)。對於廣播,您應該始終綁定到INADDR_BROADCAST,否則根據實現可能看不到廣播數據包。

+0

接收方必須綁定到0.0.0.0或將接收數據包的特定IP。發件人必須綁定到將要發送數據包的特定IP。發送者和接收者都不能綁定到'INADDR_BROADCAST'(255.255.255.255),但是發送者可以發送數據包給那個IP。不過,發送到特定的子網廣播IP會更好。在這種情況下,假設子網掩碼爲255.255.255.0,即192.168.1.255。某些路由器/防火牆阻止255.255.255.255上的廣播。 –

+0

@RemyLebeau,你錯了。這是Linux上的接收器綁定到INADDR_BROADCAST或真實廣播子網的具體要求,但我沒有看到如何綁定到特定的廣播網絡更好,除非您在網絡中阻止它。 – SergeyA

+0

http://man7.org/linux/man-pages/man7/ip.7.html「* INADDR_BROADCAST(255.255.255.255)表示任何主機,並且由於歷史原因與INADDR_ANY具有相同的綁定效果。*」 –

0

我的電腦也在這個局域網中。其IP地址由路由器隨機分配。 ...目前,我設置我的電腦的地址爲192.168.1.105

這是一個矛盾。 PC的IP由路由器動態分配,或者在PC的網絡適配器上靜態分配。除非您將路由器配置爲始終根據PC的網絡適配器的MAC地址爲您的PC分配相同的IP。

但是,如果我不綁定到0.0.0.0來監聽所有地址,那麼我應該綁定哪個地址(x.x.x.x:14455)來監聽我的硬件?

您必須綁定到當前分配給連接到數據包來自網絡的網絡的網絡適配器的任何IP地址。所以,如果192.168.1.105被分配給你的PC,那麼你將綁定到1​​92.168.1.105:14455。

此外,如果我要求硬件通過網絡進行電視廣播。我應該如何綁定我的電腦(x.x.x.x:14455?)?

同樣的規則適用。您可以綁定到0.0.0.0以偵聽所有本地IP,也可以綁定到連接到廣播將來自的網絡的特定IP。

相關問題