2012-08-14 97 views
1

我試圖創建一個客戶端/服務器應用程序(與Windows Phone 7客戶端和Windows PC服務器),可以自動發現彼此上網絡沒有任何中介服務器或預先存在的對等網絡。我已經能夠使用多播UDP爲簡單的發現模型創建一個原型客戶端/服務器實現。當兩臺計算機都配置爲使用相同的WiFi網絡時,此方案運行良好。但是,在服務器(PC)通過以太網連接到域網絡的情況下,客戶端(WP7)和服務器不能再發送或接收UDP組播數據包。兩者配置了不同的網關服務器,但奇怪的是,如果使用服務器的明確IP地址,它們仍然可以通過TCP/IP建立連接。跨WiFi /域網絡的客戶端/服務器對等發現

客戶端/服務器在以這種方式配置的網絡上自動發現對方的正確方法是什麼?是否有自動發現的標準機制?這可能是一個網絡問題,還是可以在應用程序層解決的問題?

任何見解,將不勝感激。

回答

0

這些是我的想法,不知道它們是否準確。 做它的UDP方式應該沒問題,像Totem這樣的協議依賴於UDP我猜。 UDP是網絡協議也用於自動服務發現的東西。

但是,當您處理UDP不可靠的跨域問題時,您將不得不使用TCP。 TCP將確保可靠性,但我懷疑它是否有能力進行自動發現。

我認爲一種好的方法是讓服務器註冊LDAP服務器這樣的命名服務器,以便客戶端能夠查詢LDAP並獲取服務器詳細信息。但是,這更像是一種應用層方法。

我在我們的產品中看到我們在TCP上使用Gossip協議來檢查分佈式系統的心跳。

0

多播UDP通常不通過路由器邊界傳播。因此,傳統是使用一些中央服務器來發現同伴。當你需要發現一個服務器時,事情變得更加棘手。在某些情況下,可以使用DNS(您可以將自定義記錄放入DNS中,記錄將引用服務器的地址)。在Active Directory環境中,您可以使用某些AD服務器來保留相似的記錄。

相關問題