Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
eagl69
5 / 10 / 1
Регистрация: 12.10.2011
Сообщений: 505
#1

Проверить соединение с интернетом - Программирование Android

05.05.2015, 07:45. Просмотров 1500. Ответов 20
Метки нет (Все метки)

Здравствуйте!

Столкнулся с такой проблемой, приложение устанавливает коннект с сервером (они общающийся время от времени пакетами данных) все хорошо, но теперь вдруг пропадает нет, например зашли в подвал, потом вышли, сервер уже сбросил подключение т.к. поймал разрыв, а вот приложение все еще думает что сокет активен. Как проверить сокет не посылая контрольного пакета серверу? в таком случае? или вторая ситуация прошел звонок.... интернет пропал и восстановился....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2015, 07:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Проверить соединение с интернетом (Программирование Android):

Автоматическое управление 2G интернетом - Программирование Android
Добрый день уважаемые форумчане! Мне нужно из программы управлять радиомодулями, в частности 2G интернетом (мобильные данные). Я имею ввиду...

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

Как выводить сообщение об отсутствии соединения с интернетом? - Программирование Android
Здравствуйте! У меня в ViewPager загружаются 2 фрагмента. Каждый фрагмент делает асинхронный запрос, ответ парсится с помощю JSON. ...

Проверить есть ли соединение с интернетом - C#
Мне нужна консольная программа которая проверяет есть ли соединение с интернетом и возвращает какое то значение (например "Yes") на другой...

.NET 4.x Как проверить есть ли соединение с интернетом - C#
Подскажите как на .Net проверить есть ли соедение с интернетом ?

Глючит соединение с интернетом. Не открываются сайты, не удается установить DNS соединение - Сети
Добрый день! Помогите разобраться с проблемой!!! Есть сеть из 30 ПК, последнее 7 дней стал глючить интернет на некоторых ПК с разными ОС....

20
Pablito
2614 / 2097 / 652
Регистрация: 12.05.2014
Сообщений: 7,349
Завершенные тесты: 1
05.05.2015, 08:28 #2
вопрос навстречу - как проверить есть ли связь с сервером не посылая к нему пакет?
0
eagl69
5 / 10 / 1
Регистрация: 12.10.2011
Сообщений: 505
05.05.2015, 09:03  [ТС] #3
Э... так я об этом и спрашиваю... т.к. я плохо еще знаком с работой сокетов в андроиде. Сервер у меня написан на С++ там есть специальная функция которая определяет жив ли еще сокет или нет и даже не посылая пакета в течении нескольких сек определяет это. т.е. сервер у меня свой сокет уже закрыл, а вот в приложение еще об этом не знает.

Добавлено через 1 минуту
Постоянно посылать пакеты это не выход вроде для андроида, во первых это трафик, во вторых батарейка, в третьих ресурсы системы на сколько я понимаю.

Добавлено через 1 минуту
Я представляю так: нет пропал... сам телефон это видет т.к. пропадает значек о интернете... так вот есть ли какоенибуть уведомление об этом? или еще что чтобы приложение его могло увидеть?
0
Pablito
2614 / 2097 / 652
Регистрация: 12.05.2014
Сообщений: 7,349
Завершенные тесты: 1
05.05.2015, 09:26 #4
Но ведь связи с сервером может не быть по другим причинам, например где-то по пути траффика авария.
Как тогда мониторить? Да никак, наверное.
Либо "пинговать" сервер, что не очень хорошо.
Либо таймаут для socket на стороне клиента. Там есть метод setSoTimeout()

Может конечно и есть другие методы, но я как сисадмин не могу представить как еще можно отслеживать доступность сервера
0
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 257
05.05.2015, 09:36 #5
помоему ему надо всего лишь проверить, есть ли доступ к интернету на уровне системы.

XML
1
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Java
1
2
3
4
5
6
public boolean isOnline() {
    ConnectivityManager cm =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    return netInfo != null && netInfo.isConnectedOrConnecting();
}
src: http://stackoverflow.com/questions/1...never-timeouts
0
Pablito
2614 / 2097 / 652
Регистрация: 12.05.2014
Сообщений: 7,349
Завершенные тесты: 1
05.05.2015, 09:38 #6
Цитата Сообщение от fgtmenow Посмотреть сообщение
помоему ему надо всего лишь проверить, есть ли доступ к интернету на уровне системы.
но это не решит всех проблем, только часть
у меня, например, на планшете часто показывает значек что я подключен по wi-fi, а инета нет...его нет у провайдера...там, дальше
0
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 257
05.05.2015, 09:40 #7
ping 8.8.8.8 + isOnline связка
0
Pablito
2614 / 2097 / 652
Регистрация: 12.05.2014
Сообщений: 7,349
Завершенные тесты: 1
05.05.2015, 09:47 #8
гугло-днс может быть доступен, а сервер, к которому идет подключение - нет
0
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 257
05.05.2015, 09:50 #9
по-моему эти три условия достаточны для опредения ситуации разрыва подключения с сервером со стороны приложения
0
eagl69
5 / 10 / 1
Регистрация: 12.10.2011
Сообщений: 505
05.05.2015, 11:38  [ТС] #10
Вопрос даже не в том чтобы контролировать соединение с конкретным сервером а в том чтобы определить сам выход в нет и его отсутствие при уже установленном соединении.
0
YuraAAA
1578 / 1319 / 271
Регистрация: 25.10.2009
Сообщений: 3,437
Записей в блоге: 2
05.05.2015, 11:48 #11
eagl69, может вам нужен heartbeat? Отдельный тред на сервере и на клиенте, ехо сокет, раз в 30 секунд допустим.
Цитата Сообщение от eagl69 Посмотреть сообщение
а вот приложение все еще думает что сокет активен
как так-то? Если сервер рвёт соединение (или же пропал интернет) сокет закрывается на клиенте ведь.
0
eagl69
5 / 10 / 1
Регистрация: 12.10.2011
Сообщений: 505
05.05.2015, 12:20  [ТС] #12
Цитата Сообщение от YuraAAA Посмотреть сообщение
как так-то? Если сервер рвёт соединение (или же пропал интернет) сокет закрывается на клиенте ведь.
Зашли в подвал (вам позвонили) интернет пропал, но приложение этого не видит и после появления нета слушает сокет ранее открытый... а сервер соответственно определив что соединение пропало закрыл его.
0
Pablito
2614 / 2097 / 652
Регистрация: 12.05.2014
Сообщений: 7,349
Завершенные тесты: 1
05.05.2015, 12:53 #13
чем не устраивает вариант с таймаутом socket.setSoTimeout(время_в_миллисек) ?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
05.05.2015, 13:04 #14
И для HttpURLConnection и Jsoup.connect подскажите как таймаут использовать, а то не получается у меня.
0
Pablito
05.05.2015, 13:12     Проверить соединение с интернетом
  #15

Не по теме:

не уверен что вопрос был ко мне, но я пользовался только таймаутом на Socket-е
а выше уровнем не приходилось

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.05.2015, 13:12
Привет! Вот еще темы с ответами:

Соединение с интернетом - Windows 10
Некоторые приложения (касперский, центр обновлений Windows, battle.net и пр.) не могут соединиться с интернетом и выдают ошибку типа &quot;нам...

Соединение с интернетом - Спутниковая связь
После нескольких минут интернет ведет себя странным образом. Не могу зайти на любой сайт по причине:&quot; Невозможно загрузить веб-страницу,...

Соединение с интернетом - Сети
Мужики, выручайте. При создании нового подключения к интернту через обычный модем и телефонную линию ввожу номер модемного пула, имя,...

Соединение с интернетом - C++ Builder
Нужно проверить соединение с интернетом и далее взаимозависимости с результатом, выполнить определенную функцию???


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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