現在実行中の Android Emulator のIPアドレスをコードで取得したい。どうすれば達成できますか?
明確にするために、アプリ内から、エミュレータを単に「localhost」または127.0.0.1と呼ぶことができます。
Webトラフィックは開発マシンを介してルーティングされるため、エミュレータの外部IPは、プロバイダーによってそのマシンに割り当てられたIPになります。 10.0.2.2では、開発マシンにデバイスからいつでもアクセスできます。
エミュレータのIPについてのみ尋ねていたので、何をしようとしているのですか?
エミュレータにIPを本当に割り当てたい場合:
adb Shell
ifconfig eth0
次のようになります:
eth0: ip 10.0.2.15 mask 255.255.255.0 flags [up broadcast running multicast]
このような:
public String getLocalIpAddress() {
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();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e(LOG_TAG, ex.toString());
}
return null;
}
詳細については、ドキュメントを参照してください: NetworkInterface 。
この方法を使用すると、Android emulator
YoorエミュレータのIPアドレスを取得するには
Adbシェルに移動して、このコマンドを入力します
adb Shell
ifconfig eth0
このコマンドを実行した後、私は
IP:10.0.2.15
マスク:255.255.255.
それは私のために働く。また、ネットワーキングアプリケーションの仕事をしています。
エミュレータクライアントが同じホストで実行されているサーバーに接続する場合など、ホストコンピューターのローカルホストを参照する必要がある場合は、エイリアス10.0.2.2を使用して参照しますホストコンピューターのループバックインターフェイス。エミュレータの観点から見ると、localhost(127.0.0.1)は独自のループバックインターフェイスを指します。詳細: http://developer.Android.com/guide/faq /commontasks.html#localhostalias
public String getLocalIpAddress() {
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();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e(LOG_TAG, ex.toString());
}
return null;
}