demetrius2003
@demetrius2003

Как заставить Андроид пинговать внешние IP?

Доброго дня! Вопрос собственно простой. Изучаю программирование под Андроид. Запилил простую программу:
int timeout = 2000;
        InetAddress[] addresses = InetAddress.getAllByName(String.valueOf(ad.getText()));
        for (InetAddress address : addresses)
        {
            if ( address.isReachable(timeout))
            {
                info.setText("OK"); // just set a break point here
            } else {
                info.setText("NOT OK");
            }
        }

Всё собирается и устанавливается без проблем (Уже!!!), но есть одна непонятка - программа пингует только внутренние IP! Т. е. 127.0.0.1, localhost, шлюз по умолчанию (192.168.1.1) и второй роутер (192.168.1.2), сам телефон по адресу выданному DHCP (192.168.1.204) - пингуются без проблем, но, скажем, 8.8.8.8, yandex.ru, и прочие заведомо доступные для ICMP не пингуются! Такое впечатление, что где-то какие-то настройки подкрутить надо! Функция isReachable не пингует нормально внешние IP! Почему?

UPD1: Поведение программы одинаково и в эмуляторе и на железе. В манифесте есть строки разрешающие Интернет использовать.
  • Вопрос задан
  • 1111 просмотров
Пригласить эксперта
Ответы на вопрос 1
demetrius2003
@demetrius2003 Автор вопроса
Атата! Апдейт номер первый (он же последний). Оно же и частичное решение проблемы. Разобраться полностью пока не удалось, но! Код приведённый выше нормально работает на одних телефонах и совсем не работает на других! Скромно предполагаю, что ответ лежит не в плоскости взаимодействия Джавы с Далвиком. Причина не в коде выше, не в манифестах и разрешениях. Она, скорее всего, в ядре. Где-то кастрировали Линукс чуть больше чем полностью и вуаля! ICMP нету в телефоне как класса. Не знаю тонкостей. Пока лишь констатирую факт!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы