2012-06-06 78 views
1

我想獲取Android手機的IP地址,爲此我嘗試了InetAddress,但是我在仿真器上獲得了IP地址127.0.0.1。我怎樣才能得到實際的IP地址。 其次,我想通過使用Web服務器的IP地址聯繫該android移動設備,詢問其位置等信息。 對於例如:假設Phone1需要Phone2的信息,則Phone1使用其保存的IP地址聯繫web服務器和web服務器聯繫人phone2,然後phone2響應其位置給web服務器和web服務器響應phone1。我想獲取Android手機的IP地址,以及如何從Web服務器聯繫android手機使用該IP地址獲取一些信息?

回答

0

此代碼爲越來越IPV4:

private String getLocalIpAddress() { 
     try { 
      for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { 
       NetworkInterface intf = en.nextElement(); 
       for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { 
        InetAddress in`enter code here`etAddress = enumIpAddr.nextElement(); 
        if (!inetAddress.isLoopbackAddress()) { 
         if (inetAddress instanceof Inet4Address) { 
          return ((Inet4Address)inetAddress).getHostAddress().toString(); 
         } 
        } 
       } 
      } 
     } catch (SocketException ex) { 
      Log.e("ServerActivity", ex.toString()); 
     } 
     return null; 
    } 
+0

此代碼獲取IPV4 – Narendra

0

與其讓服務器詢問手機的位置,不如嘗試另一種方式。

創建一個將在手機上運行的應用程序,並定期將其位置發送到您的服務器。然後,當電話2想知道電話1的位置時,它將從服務器獲得最新的已知位置。

+0

這將填補我的數據庫與緯度郎,我只想設備的IP地址是更新時,它的變化,我想異步調用時請求來自phone1,那麼只有phone2必須與位置聯繫。 – KJS

+0

不一定會填滿您的數據庫,因爲您不必存儲每個位置,只能存儲最近的位置。 – sschrass

+0

謝謝但我試圖以不同的方式實現它 – KJS

0

這裏找到:http://www.droidnova.com/get-the-ip-address-of-your-device,304.html

public String getLocalIpAddress() { 
try { 
    for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { 
     NetworkInterface intf = en.nextElement(); 
     for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { 
      InetAddress inetAddress = enumIpAddr.nextElement(); 
      if (!inetAddress.isLoopbackAddress()) { 
       return inetAddress.getHostAddress().toString(); 
      } 
     } 
    } 
} catch (SocketException ex) { 
    Log.e(LOG_TAG, ex.toString()); 
} 
return null; 
} 

因此,如果此方法返回null,沒有可用的連接。 如果該方法返回一個字符串,則該字符串包含獨立於3G或WiFi的設備當前使用的IP地址。

+0

我已經使用這個代碼,它也給我在仿真器上的IP地址10.0.2.15,當它將在實際設備上運行時它會給出正確的IP地址。 – KJS

+0

我這麼認爲,是的。注意NAT(路由器等)。 – sschrass

+0

和我怎樣才能訪問信息從Android手機使用該IP地址 – KJS