Получение IP-адреса моей локальной сети (192.168.xxxx) (IPV4)

В моем устройстве Android я пытаюсь найти его IP-адрес (IPV4).

Если я сделаю следующий код

InetAddress inet = InetAddress.getLocalHost();
System.out.println(inet.getHostAddress()); //giving me 127.0.0.1

Код дает мне 127.0.0.1.

Я хотел получить фактический IP 198.168.xx.xx.

(В моем ПК тот же код дает мне фактический IP, хотя.)

 Luiggi Mendoza22 июн. 2013 г., 17:08
[OT] извините, но скрывать частный IP (192.168.xxx?) Нет необходимости, вы можете 'не быть взломанным людьми, которые знают эту информацию.
 laalto22 июн. 2013 г., 19:13
@GrailsGuy Не дублируя это, OP хочет адрес локальной сети 192.168, а не адрес публичного маршрутизатора.
 Kaaveh Mohamedi11 авг. 2016 г., 16:24
Ответ DigitalRounin очень полезен для вашей цели. Проверьтеэтот
 Vishnudev K22 июн. 2013 г., 22:52
@LuiggiMendoza Я знаю, мне было лень, чтобы поместить это там.

Ответы на вопрос(2)

Решение Вопроса
public static String getIpAddress() { 
            try {
                for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
                    NetworkInterface intf = en.nextElement();
                    for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                        InetAddress inetAddress = enumIpAddr.nextElement();
                        if (!inetAddress.isLoopbackAddress()&&inetAddress instanceof Inet4Address) {
                            String ipAddress=inetAddress.getHostAddress().toString();
                            Log.e("IP address",""+ipAddress);
                            return ipAddress;
                        }
                    }
                }
            } catch (SocketException ex) {
                Log.e("Socket exception in GetIP Address of Utilities", ex.toString());
            }
            return null; 
    }

Дать разрешения

Также добавьте в mainfest.

<uses-permission android:name="android.permission.INTERNET">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
</uses-permission></uses-permission>
 Vishnudev K22 июн. 2013 г., 17:07
@ Аюш, но по телефонуs показывает только адрес ipv4. Есть ли способ конвертировать его в IPv4.
 Vishnudev K22 июн. 2013 г., 17:01
спасибо за быстрый ответ. Я получаю "fe80 :: 2064: 32ff: fe5d: 2edf% p2p0" как мой адрес. Это адрес ipv6. как получить адрес ipv4?
 Ayush22 июн. 2013 г., 17:11
@VishnudevK ipv4 и ipv6 оба разные вещи, они не могут быть преобразованы.
 Ayush22 июн. 2013 г., 17:21
@VishnudevK Я редактировал вопрос, так как ответ только для IPV4.
 Ayush22 июн. 2013 г., 17:05
@VishnudevK Это потому, что ваш маршрутизатор настроен для IPv6-адреса.
 Vishnudev K22 июн. 2013 г., 17:17
@ayush понял. увидеть изменения, которые я сделал
 Srikant Sahay22 июн. 2013 г., 17:03
+1 за проверку всех интерфейсов. Это позаботится как о Wi-Fi, так и о сотовых интерфейсах.

чтобы получить свой IP-адрес.

WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
int ipAddress = wifiManager.getConnectionInfo().getIpAddress();
return String.format("%d.%d.%d.%d", (ipAddress & 0xff), (ipAddress >> 8 & 0xff),
        (ipAddress >> 16 & 0xff), (ipAddress >> 24 & 0xff));

Это возвращает это как Строка в форме "х.х.х.й»

Единственное разрешение, которое вам нужно в вашемmanifest.xml является

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE">
</uses-permission>
 SJuan7622 июн. 2013 г., 17:05
А если он не использует WiFi?
 Ken Wolf22 июн. 2013 г., 17:09
Какие'Пример устройства, которое неиспользовать Wi-Fi, чтобы получить внутренний адрес локальной сети? 198.168.xx.xx. Порт Ethernet?
 Ken Wolf22 июн. 2013 г., 17:35
:) нп я понимаю. По моему опыту, код, который я разместил, очень хорошо работает на устройствах Android, чтобы делать именно то, что просил пользователь.
 SJuan7622 июн. 2013 г., 17:34
Как часто, я концентрируюсь на основной части вопроса и пропускаю данные из заголовка (это единственное место, гдеLAN часть проинформирована). И да, порт Ethernet возможен (хотя я согласен, что это не так часто в настоящее время).

Ваш ответ на вопрос