0

私のアプリでは、サーバーのIPをフェッチする必要があります。IPをフェッチするためのコードは

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();
                Log.v("","ip1--:" + inetAddress);
                Log.v("", "ip2--:" + inetAddress.getHostAddress());       
                String ipv4;
      if (!inetAddress.isLoopbackAddress() && InetAddressUtils.isIPv4Address(ipv4 = inetAddress.getHostAddress())) {

                    String ip = inetAddress.getHostAddress().toString();
                    Toast.makeText(getApplicationContext(), inetAddress., Toast.LENGTH_SHORT).show();
                    Log.v("","ip---::" + ip);
                    // return inetAddress.getHostAddress().toString();
                    return ipv4;
                }
            }
        }

ただし、デバイスがネットワーク接続されたWi-Fiデバイスに接続されている場合は、ローカルアドレスを返します。ネットワークの親IPを取得する方法を教えてください。前もって感謝します...

4

2 に答える 2

1
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();

ipAddressが整数であることに注意してください。

たとえば、IPアドレスが「86.52.119.245」の場合:

the int returned by getIpAddress will be 4118230102.
Translated into binary this number is: 11110101 01110111 00110100 01010110.
Convert each byte into a decimal, and then you get the numbers: 80 35 83 10
Notice that the numbers are in network order so you have to flip it.
于 2012-09-10T06:42:15.233 に答える
1
private String wifi_ip() 
    {
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpGet httpget = new HttpGet("http://wiki.iti-lab.org/ip.php");
            HttpResponse response;

            response = httpclient.execute(httpget);

            // Log.i("externalip",response.getStatusLine().toString());

            HttpEntity entity = response.getEntity();
            if (entity != null) {
                long len = entity.getContentLength();
                if (len != -1 && len < 1024) {
                    String str = EntityUtils.toString(entity);
                    // Log.i("externalip",str);
                    // ip.setText(str);
                    ip1 = str;
                }
            }
        } catch (Exception e) {
            // ip.setText("Error");
        }
        return ip1;
    }
于 2012-09-10T12:35:59.780 に答える