2012-03-11 80 views
2

我有一個線程是廣播UDP包。我有另一個線程正在監聽相同的廣播。這是我的應用程序可以檢測網絡上的其他實例。然而,我有一個問題,即當一個實例廣播時,它會自行提取並認爲它本身就是另一個節點。我的問題是你怎麼可靠地確定一個數據包來自你自己,所以它可以被忽略?我可靠地說,因爲我知道你可以在套接字上調用setLoopbackMode(true)來防止環回,但根據api文檔,這種方法並不總是工作?JAVA:廣播UDP包時檢測自我

+1

注意:似乎設置環回模式在Windows 7上正常工作,但在Ubuntu下運行setLoopbackMode提示看起來什麼都不做 – 2012-03-11 13:32:37

回答

2

檢查源IP地址。 如果它等於你自己的地址,則丟棄該包。如果無法確定您要從哪個接口發送,請確保檢查所有可能的源地址。

+0

如何確定我的接口的IP地址做這種消除? – 2012-03-11 13:32:06

+0

我發現這個http://docs.oracle.com/javase/tutorial/networking/nifs/listing.html – 2012-03-11 13:39:34

+0

當兩個這樣的程序在同一臺計算機上運行時,如何解決問題? – Matthieu 2013-11-18 08:57:52