2010-12-08 82 views
0

当手机设备连接3G网络时,如何判断如何判断Android设备的IP地址是否公开?如何判断Android设备的IP地址是否公开

public static InetAddress getLocalIpAddress() { 
    try { 
     for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { 
      NetworkInterface intf = en.nextElement(); 
      for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { 
       InetAddress address = enumIpAddr.nextElement(); 
       return address; 
      } 
     } 
    } catch (SocketException ex) { 
     Log.e(DEBUG_TAG, ex.toString()); 
    } 
    return null; 
} 
+0

你在做什么? – Falmarri 2010-12-08 00:44:25

回答

0

写一个小巧的网页是这样的:

<?php echo $_SERVER["REMOTE_ADDR"]; ?> 

然后取与异步任务:

import org.apache.http.client.ResponseHandler; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.BasicResponseHandler; 
import org.apache.http.impl.client.DefaultHttpClient; 
import android.os.AsyncTask; 

public class NetreadTask extends AsyncTask<String, Void, String> { 
    protected String doInBackground(String... urls) { 
     return netread(urls[0]); 
    } 

    public final String netread(String url) { 
     try { 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpGet httpGet = new HttpGet(url); 
      ResponseHandler<String> resHandler = new BasicResponseHandler(); 
      String page; 
      page = httpClient.execute(httpGet, resHandler); 
      return page; 
     } catch (Exception e) { 
      e.printStackTrace(); 
      return null; 
     } 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 
    } 
} 

这样称呼它:

String publicip = new NetreadTask().exec([yourpage]).get(); 

然后比较他们俩。您通过上述方法获得的IP将保证为您提供公共IP地址。

我知道这是一个老问题,但我希望它可以帮助别人!

相关问题