2010-12-08 87 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地址。

我知道這是一個老問題,但我希望它可以幫助別人!

相關問題