總之:如何可靠地發現一個(大概是多段式)局域網絡,客戶端零配置創建一個Windows(win32)中的服務在網絡上發現
我的客戶端應用程序來定位上的某個地方運行的服務器服務器應用程序不知道服務器IP地址。它必須在本地局域網上工作,該局域網可以通過集線器或其他交換設備分成多個段。
我已經有了一個工作解決方案,但是讓它在多網段網絡上工作有點麻煩。它的工作原理如下:
當客戶端啓動時,它會在自己的網段上發送UDP廣播。如果服務器在同一個網段上運行,則它沒有任何問題 - 服務器用相應的消息進行響應。
如果服務器和客戶端正在由不轉發UDP的hub/switch分開的網絡上運行(最有可能的情況),那麼我有一個服務器實例在每個段上運行,並且它們將客戶端請求轉發給每個其他通過TCP - 但我需要配置這個服務器實例(簡單,但仍然是一個技術支持的痛苦。)這是我需要解決的主要問題。有些網站我們有數百個客戶在5或6個單獨的網段上運行。
我面臨的問題: 1.儘管我的應用程序安裝程序在防火牆上啓用了適當的端口,但有時候我會遇到這種情況似乎並不正確。 2.必須在不轉發UDP的集線器/交換網絡上運行多個服務器實例(並因此配置和維護它們)最後,我需要一個無需維護即可在最小的Windows網絡(XP/2000) 2000/Vista),可能沒有配置Active Directory或其他查找服務。
我不想標記任何運行時的東西 - 應該可以用普通的VC++或Delphi來完成。
商業應用程序通常採取哪些方法?我知道SQL Server使用廣播和NetBEUI調用的組合(我對此可能是錯誤的)。
在此先感謝。
在upnp.org或許有一個如何做到這一點的提示? – djangofan 2009-10-12 19:09:24