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