我們開發了一個客戶端應用程序和一個服務器應用程序。客戶端使用http協議與服務器進行通信,併發送一些數據以供服務器處理。如何自動檢測服務器?
我們的結構允許我們將服務器安裝在任何地方。我可以在同一個客戶端網絡上,甚至在雲上。
當服務器託管在雲上時,向用戶詢問服務器地址是有意義的(因爲如果用戶希望它可以改變),但當服務器與服務器位於同一網絡時,這是沒有意義的客戶。除此之外,我們目前正在要求用戶配置服務器IP /名稱以連接到服務器。
爲了避免這種情況(詢問用戶的地址),我開發了一個基於UDP的發現服務。客戶端廣播一條消息,表明服務器用它的地址回答。它在某些情況下可以工作,但當用戶擁有某種防火牆,代理甚至防病毒軟件時不會發生這種情況。
我已經閱讀了很多關於發現服務的內容,最喜歡的是Bonjour。
所以,問題是:什麼是服務器時,沒有客戶端被攔截的防火牆,代理服務器等在同一網絡上發現一個服務器的IP的最好方法?
客戶端是否要求防火牆允許入站UDP數據包到您選擇的端口? –
我不能。我的軟件分佈廣泛,所以我無法控制它運行的環境。 –