2013-05-01 103 views
1

我正在製作一個不錯的多人遊戲應用程序,但是我希望我的應用程序可以在您的lan中搜索主機。我知道你可以很容易地獲得你自己的IP,然後暴力破解所有的IP來查看是否有任何連接,但是這對你的計算機來說都是非常困難的工作,即使你正確地多線程處理也需要一段時間。獲取所有本地ip的(arp -a)

似乎沒有好的方法來獲得Java中的ARP表,但我希望有類似的地方,你可以快速,高效地獲得所有本地IP地址。

任何幫助將不勝感激。

+0

入住此... http://stackoverflow.com/questions/1238963/query-arp-cache-to-get-mac-id – SmV 2013-05-01 21:06:48

+0

感謝反應。我不是像他那樣尋找MAC地址,而是尋找ip地址,所以我希望有人能以另一種方式幫助我。 – 2013-05-01 21:15:49

回答

0

存在幾個選項,可用於實現此目的。

分散化的一個

你可以做的是broadcasting從您的應用程序的請求,要求網絡上的每臺主機,如果他們是目前可用於遊戲(發送上255.255.255.255爲實例的請求時,會引起您的路由器重新發送您發送給LAN上每個主機的數據報)。

這將確保只有已啓動遊戲並準備好玩的主機纔會響應此請求。

現在幾種廣播協議在局域網上大量使用。其中之一是SSDP (Simple Service Discovery Protocol),它與UPnP協議一起用於服務發現。儘管如此,對於多人遊戲來說,通過廣播/多播使用肯定有更好的協議。

集中一個

一個發現一個多人遊戲玩家最常見的方式保持在一箇中央服務器的存在對其中兩個請求者(誰正在尋找一個遊戲的人)和主持人(主持遊戲的人)已連接。

該方法的缺點是具有單點故障,即服務器,但與分散式解決方案不同的是,它既適用於局域網也適用於互聯網(或每種基於IP的協議)。

如果我不得不開發一款多人遊戲,那麼我將開始挖掘您需要實現的主機發現功能。