2010-12-08 5 views
0

携帯電話デバイスが3Gネットワ​​ークに接続されている場合、どのようにしてAndroidデバイスのIPアドレスが公開されているかどうかを判断するにはどうすればよいですか?AndroidデバイスのIPアドレスが公開されているかどうかを調べる方法

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(); 

そして、比較の非同期タスクとすることをフェッチその後

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

:このような小さなクイックのWebページを書く

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

+2

ほとんどのPCがパブリックIPアドレスを持つことはほとんどないので、AndroidデバイスはパブリックIPアドレスを持つことはほとんどありません。すべてがNATの背後にありますが、部分的にはセキュリティのためにIPv4アドレススペースが限られていることもあります。今、誰かがAndroidにルータを置くと、おそらく公共のIPアドレスを持っているかもしれませんが、それは私がほとんど心配する価値がないと思うような今のような縁石の使用例です。 – CommonsWare

+0

serversocketを実行しようとしています – sweetier

答えて

0

二つ。上記の方法で取得したipは、パブリックIPアドレスを与えることが保証されています。

これは古い質問ですが、誰かに役立つことを願っています!

関連する問題