2010-07-08 33 views
6

我想弄清楚如何使用winsockets將我的遊戲變成局域網可玩的遊戲。我已經閱讀了一些winsocket文檔,但我無法弄清楚客戶端如何獲得在局域網上創建的所有遊戲。使用winsock掃描局域網遊戲服務器

是否必須嘗試'連接'到局域網上的每個IP,如試圖連接到192.168.0.1,然後192.168.0.2等?有沒有更好的辦法?

+0

退房http://en.wikipedia.org/wiki/Broadcast_address – 2010-07-08 23:24:51

回答

2

通常,這些遊戲服務器使用本地UDP廣播,這是所有客戶端接收和,只要能處理他們正在聽它的東西。

下面是一些簡單的客戶端和服務器的代碼,我發現,可能是你的興趣:http://visual-c.itags.org/visual-c-c++/29424/

0

首先,我建議你得到Wireshark的任何聯網的發展。它會告訴你什麼包通過電線。它可以讓你看到其他遊戲如何做,因爲有很多方法可以做到這一點。

使用UDP廣播是一種方法。只需將目標IP的最後一個字節更改爲255即可。

+4

盲目地改變最後一個字節不會總是工作。這取決於網絡上使用的實際子網掩碼。生成廣播地址的正確方法是使用本地計算機的IP,並將其與子網掩碼一起使用,然後將其與子網掩碼的反向進行「或」運算。或者,只需使用全球廣播地址255.255.255.255,但並非所有防火牆/路由器都允許通過該地址。 – 2010-07-13 01:28:33

2

我認爲有兩種可能的方法來做到這一點。

  1. 製作客戶端和服務器連接的「大廳」,以便通過它們互相找到對方。

  2. 服務器廣播UDP數據包。客戶端監聽並更新服務器列表。

如果你需要一個快速簡便的方法,第二個選項將是巨大的,但reme​​ber,因爲它們是爲每個客戶只能使用一次最UDP數據包將被浪費。

第一個選項是對此問題的更一般和可擴展的解決方案。但是,它可能需要更多時間來設計和實施。