Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Rainmaker93
3 / 3 / 1
Регистрация: 12.09.2013
Сообщений: 69
#1

Программное получение белого IP адреса - Программирование Android

09.01.2016, 10:32. Просмотров 268. Ответов 6
Метки нет (Все метки)

Всем добрый день!
Наткнулся на необходимость получения IP адреса устройства в сети. Нагуглил следующую функцию:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    public String getIpAddress() {
        
        String ip = "";
        try {
            Enumeration<NetworkInterface> enumNetworkInterfaces = NetworkInterface
                    .getNetworkInterfaces();
            while (enumNetworkInterfaces.hasMoreElements()) {
                NetworkInterface networkInterface = enumNetworkInterfaces
                        .nextElement();
                Enumeration<InetAddress> enumInetAddress = networkInterface
                        .getInetAddresses();
                while (enumInetAddress.hasMoreElements()) {
                    InetAddress inetAddress = enumInetAddress.nextElement();
 
                    if (!inetAddress.isSiteLocalAddress()) {
                        ip = inetAddress.getHostAddress();
                        this.ipAdress = ip;
                    }
 
                }
 
            }
 
        } catch (SocketException e) {
            e.printStackTrace();
            ip = null;
        }
 
        return ip;
    }
Работать она работает, только вот внутри WiFi сети она достает локальный IP. Если включить могбильные данные, то она достает какой то не такой адрес начинающийся на 10. Сравнивал с IP шником, который мне выдал запрос "Мой ip адрес" в гугле.

Не подскажите пожалуйста, что не так и как мне все таки выковырять нужный IP?
Спасибо
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2016, 10:32     Программное получение белого IP адреса
Посмотрите здесь:

Получение адреса, по координатам - Программирование Android
Здравствуйте. Заранее извиняюсь, за возможное непонимание очевидных вещей, я с явой, до прошлой недели был знаком только шапочно, но надо,...

Камера, настройка баланса белого - Программирование Android
Всем привет! Подскажите пожалуйста, как в андройде приложение с камерой сделать настойку баланса белого цвета? или где про это можно...

Программное масштабирование - Программирование Android
Доброе время суток. Возникла проблема с масштабированием при поддержки разных экранов разных производителей. Для масштабирования...

Программное копирование файлов - Программирование Android
Здравствуйте. Общий принцип кода такой: 1) находим в списке установленных приложений необходимое мне: PackageManager packageManager =...

Программное удаление приложения - Программирование Android
Реально ли из android-приложения деинсталлировать другое android-приложение?

Программное завершение приложения - Программирование Android
Здравствуйте. Как программно завершить приложение? То есть не завершить активность через finish(), а именно выйти из приложения вообще.

Программное создание layout - Программирование Android
Впервые приходится создавать экран полностью через класс. Не могу понять, как должны привязываться компоненты: снизу вверх или сверху вниз?...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kolobok0
46 / 46 / 8
Регистрация: 24.01.2010
Сообщений: 225
09.01.2016, 10:50     Программное получение белого IP адреса #2
wifi у вас стоит на роутере или модеме? А тот уже в свою очередь лезет к провайдеру.
Если так - то в зависимости от стратегии работы с провайдером вам выдаётся либо статика либо отрабатывает DHCP. Провайдер в свою очередь может вам назначать либо виртуальный IP либо честный IP который из его инет пула берётся. где то так.

без вспомогательного внешнего софта вы не сможете узнать IP адрес провайдера. Как вариант - парсить ответ от "мой IP адрес в гугле". только маленький вопрос возникает - а нафига его узнавать?

(круглый)
Rainmaker93
3 / 3 / 1
Регистрация: 12.09.2013
Сообщений: 69
09.01.2016, 11:09  [ТС]     Программное получение белого IP адреса #3
kolobok0,
Цитата Сообщение от kolobok0 Посмотреть сообщение
только маленький вопрос возникает - а нафига его узнавать?
У меня есть прога, в которой я реализовал небольшой чатик на сокетах. В нее логинятся пользователи и при логине в базу MySQL пишется IP юзера. Другой пользователь, грубо говоря, хочет открыть с ним чат, и ему необходимо знать IP своего собеседника
Вот такая у меня идея есть. Может быть ее стоит переосмыслить и написать как то по другому...
kolobok0
46 / 46 / 8
Регистрация: 24.01.2010
Сообщений: 225
09.01.2016, 11:15     Программное получение белого IP адреса #4
если чатик у вас болтается в инете, то проблем по узнаванию IP адреса собственно у Вас не должно быть

(круглый)
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
09.01.2016, 11:34     Программное получение белого IP адреса #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Всё украдено до нас

http://stackoverflow.com/a/6218852
http://stackoverflow.com/a/12854981
Rainmaker93
3 / 3 / 1
Регистрация: 12.09.2013
Сообщений: 69
09.01.2016, 11:45  [ТС]     Программное получение белого IP адреса #6
kolobok0,
У меня логика такая, что на клиенте в отдельном потокекрутится сервак) и собственно сам клиент к нему цепляется по localhost, а удаленному юзеру нужен белый ip этого сервера)
Armagedo,
Спасибо за инфу) обязательно попробую)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2016, 12:12     Программное получение белого IP адреса
Еще ссылки по теме:

Программное добавление View - Программирование Android
Не могу разобраться: нужно программно прилепить н-ное количество вьюх. Делаю так: Dialog dialog = new Dialog(pd.getContext()); ...

Программное добавление View - Программирование Android
Доброго времени. Знаю что на эту тему много инфы, как на форуме так и на других ресурсах, но решения своей проблемы все же не нашел. суть...

Программное добавление View - Программирование Android
Всем привет! У меня в роли setContentView выступает класс Draw2D, в котором я собираюсь рисовать кое-какую графику. Графика рисуется...

Программное создание экрана - Программирование Android
Всем доброго дня! Коллеги. Так получилось что в программе приходится рисовать все экраны программно. Столкнулся со следующей проблемой:...

Программное создание TextView - Программирование Android
Всем привет! помогите пожалуйста. Как сделать по нажатию на кнопку автоматическое создание нескольких других элементов например TextView...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Rainmaker93
3 / 3 / 1
Регистрация: 12.09.2013
Сообщений: 69
10.01.2016, 12:12  [ТС]     Программное получение белого IP адреса #7
Запихнул все дело в класс отдельный. IP получает нормальный)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package com.helper.moto.motohelper;
 
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
 
import android.os.AsyncTask;
 
public class GetIP extends AsyncTask<Void, Void, String> {
    String ip;
 
    @Override
    protected String doInBackground(Void... params) {
         try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpGet httpget = new HttpGet("http://ip2country.sourceforge.net/ip2c.php?format=JSON");
                // HttpGet httpget = new HttpGet("http://whatismyip.com.au/");
                // HttpGet httpget = new HttpGet("http://www.whatismyip.org/");
                HttpResponse response;
 
                response = httpclient.execute(httpget);
                //Log.i("externalip",response.getStatusLine().toString());
 
                HttpEntity entity = response.getEntity();
                entity.getContentLength();
                String str = EntityUtils.toString(entity);       
                JSONObject json_data = new JSONObject(str);
                ip = json_data.getString("ip");
                
            }
            catch (Exception e){
                e.printStackTrace();
            }
 
 
        
        return ip;
    }
 
}
Yandex
Объявления
10.01.2016, 12:12     Программное получение белого IP адреса
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru