2016-05-03 22 views
0

我有一個在健身房本地工作的android應用程序。它通過IP連接到本地服務器。問題是,本地服務器從DHCP訪問點獲取IP,有時會更改IP,導致應用程序無法連接到服務器。如何將我的Android應用程序連接到使用域的本地服務器?

我使用IIS作爲Web服務器。我如何解決這個問題?如果我手動設置IP,它不起作用。

+0

你可以配置DHCP服務器始終給出相同的IP到你的服務器? – Henry

+0

...或使用靜態IP地址... – akmozo

+0

檢查我的答案,它應該解決您的問題 – crashOveride

回答

0

這是一個經典的網絡發現問題。您可以使用udp數據包來識別服務器。

客戶端= Android應用程序,服務器=本地服務器 服務器實施

  1. 。打開監聽UDP請求在服務器上的插座。 (我選擇8888)

  2. 做一個循環,處理UDP請求和響應

  3. 在循環中,檢查收到UPD包看它是否有效
  4. 仍在循環中,發送響應接收到的數據包

客戶實現

  1. 打開一個隨機端口上的插座的IP和端口。
  2. 嘗試廣播到默認的廣播地址(255.255.255.255)
  3. 遍歷計算機的所有網絡接口,並得到他們的廣播地址
  4. 發送UDP數據包內循環到接口的廣播地址
  5. 等待回覆
  6. 當我們有回覆時,請檢查包是否有效
  7. 當它有效時,獲取包的發件人IP地址;這是服務器的IP地址
  8. 關閉插座!我們不想離開別人的計算機上打開隨機端口

http://michieldemey.be/blog/network-discovery-using-udp-broadcast/

Android - find a server in the network

0

可以使用DDNS使用域名您選擇的DDNS服務將創建以達到您的服務器,DDNS系統會自動將其映射到您的服務器的DHCP IP。 通常DDNS是免費的一段時間,然後你必須支付,其他DDNS服務是永久免費的,但需要你擊中你的個人服務帳戶,因爲沒有calcalled。

有了DDNS,您只需從現有的DDNS服務中選擇(http://dyndns.it/,http://www.noip.com/free,ecc ecc),然後按照相應網站上的步驟進行操作。

一定要知道,如果DDNS服務能夠在正確的端口進行監聽(如果你不使用RESTful服務可能不是80)

相關問題