1

Android PhoneのIPアドレスを取得したいのですが、このためにInetAddressを試しましたが、エミュレーターでIPアドレス127.0.0.1を取得しました。実際のIPアドレスを取得するにはどうすればよいですか。次に、WebサーバーからのIPアドレスを使用してそのAndroidモバイルに連絡し、その位置などの情報を尋ねたいと思います。たとえば、Phone1がPhone2の情報を必要とし、Phone1がWebサーバーに接続し、Webサーバーが保存されたIPアドレスを使用してphone2に接続し、次にphone2がWebサーバーへの場所を応答し、Webサーバーがphone1に応答するとします。

4

3 に答える 3

0

サーバーに電話の位置を尋ねさせる代わりに、別の方法で考えてみてください。

電話で実行され、定期的にその位置をサーバーに送信するアプリを作成します。次に、電話2が電話1の位置を知りたい場合、サーバーから最新の既知の位置を取得します。

于 2012-06-06T09:07:04.187 に答える
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 アドレスが含まれます。

于 2012-06-06T09:20:47.547 に答える
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;
    }
于 2014-04-02T12:44:45.860 に答える