Я хочу отримати за допомогою коду IP-адресу емулятора Android, що працює зараз . Як цього можна досягти?
Я хочу отримати за допомогою коду IP-адресу емулятора Android, що працює зараз . Як цього можна досягти?
Відповіді:
Тільки для уточнення: у своєму додатку ви можете просто назвати емулятор `` localhost '' або 127.0.0.1.
Веб-трафік направляється через вашу розробницьку машину, тому зовнішній IP емулятора - це будь-який IP, призначений цій машині вашим постачальником. До машини розробника завжди можна отримати доступ із вашого пристрою на 10.0.2.2.
Оскільки ви запитували лише про IP- адресу емулятора , що ви намагаєтесь зробити?
10.0.2.1
, а не безпосередньо. Отже, між цим маршрутизатором 10.0.2.1
і машиною хоста / розробника має бути одне додаткове з'єднання 127.0.0.1/10.0.2.2
. Що я насправді зазвичай змінюю номер порту, до якого я хочу підключитися.
Якщо ви дійсно хочете, щоб ваш емулятор був присвоєний IP:
adb shell
ifconfig eth0
Що дасть вам щось на зразок:
eth0: ip 10.0.2.15 mask 255.255.255.0 flags [up broadcast running multicast]
adb shell
: ifconfig: eth0: No such device
будь-які ідеї чому?
wlan0
Подобається це:
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 .
За допомогою цього методу ви отримаєте 100% правильну ip-адресу для вашого емулятора Android
Щоб отримати ip-адресу вашого емулятора
Перейдіть до оболонки adb і введіть цю команду
adb shell
ifconfig eth0
Після запуску цієї команди я отримую
ІР: 10.0.2.15
Маска: 255.255.255.0
Що працює для мене. Я також працюю над мережевим додатком.
Якщо вам потрібно звернутися до локального хосту вашого хост-комп'ютера, наприклад, коли ви хочете, щоб клієнт емулятора зв’язався із сервером, що працює на тому самому хості, використовуйте псевдонім 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;
}