2010-04-01 196 views
0

我目前正在學習java中的基本網絡。 我一直在玩弄我的兩臺電腦之間的服務器和客戶端關係。 然而,我無法弄清楚如何分配方案(比如視頻遊戲),不僅可以找到「宿主」電腦,而且還對這些服務器以創建兩臺計算機之間的套接字使用的端口號。我真正看到創建Socket的唯一方法是使用已知的IP地址和已知的端口號。客戶端如何查找服務器的端口號?

你如何搜索局域網其他計算機(主機)尋找客戶呢?

你如何確定服務器位於無「查驗」所有可用端口的響應的端口(其中,我明白了,是壞的形式...趣談「服務器攻擊」 ...)?

在這種情況下爲視頻遊戲,可以有任意數量的同一網絡上的計算機,任何數量的人可能正試圖在主機或以其他方式運行的應用程序。其他重要信息,或者參考比我現在用的是一個更詳細的教程,關於在客戶端上的信息,所以很少進行連接,將不勝感激。

非常感謝,

喬納森

回答

5

通常服務/方案有一個給定的端口號,或者他們使用的端口號的範圍(HTTP使用80,SSH使用22等)。此外,他們可能會連接到「主」服務器,以便宣佈他們的存在並瞭解其他節點(例如Battle.net)。

的這些都不是嚴格需要,如果使用零配置(通過Bonjour,的avahi等)。 Zeroconf允許機器在局域網上執行組播DNS,而不是傳統上用於DNS的點播機制。這使他們能夠發現也支持mDNS的網絡中的計算機,並發現運行在其上的服務。

+0

所以你說除了兩臺計算機之間的連接之外,它們還必須連接到另一臺服務器,這臺服務器的位置是固定的(可能是通過互聯網)來互相「查找」? – Jonathan 2010-04-01 06:00:50

+0

如果地址不是用戶明確給出的,那麼是的。掃描整個互聯網尋找運行兼容軟件的其他機器是不切實際的。 – 2010-04-01 06:24:49

+0

我正在使用局域網,但無論您的觀點如何,都是如此。非常感謝你。 – Jonathan 2010-04-01 06:40:40