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

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

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

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

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

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

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

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

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

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

Соединение с БД - Программирование Android
Подаскажите пожалуйста, существует ли реляционная БД к которой можно нормально законнектить android устройство?

Соединение с БД - Программирование Android
Не могу найти хорошей статьи про соединение приложения с БД (не локальной). Есть сайт, и хочу к нему запилить приложение, и вот нужно...

TLS соединение - Программирование Android
Всем привет! Пытаюсь установить TLS соединение с gmail.com, но в итоге получаю javax.net.ssl.SSLHandshakeException:...

Не работает TCP-соединение - Программирование Android
Помогите найти ошибку, код запускается, доходит до ServerSocket s = new ServerSocket(9999); дальше не работает, об...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
05.05.2015, 08:28     Проверить соединение с интернетом #2
вопрос навстречу - как проверить есть ли связь с сервером не посылая к нему пакет?
eagl69
4 / 9 / 1
Регистрация: 12.10.2011
Сообщений: 498
05.05.2015, 09:03  [ТС]     Проверить соединение с интернетом #3
Э... так я об этом и спрашиваю... т.к. я плохо еще знаком с работой сокетов в андроиде. Сервер у меня написан на С++ там есть специальная функция которая определяет жив ли еще сокет или нет и даже не посылая пакета в течении нескольких сек определяет это. т.е. сервер у меня свой сокет уже закрыл, а вот в приложение еще об этом не знает.

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

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

Может конечно и есть другие методы, но я как сисадмин не могу представить как еще можно отслеживать доступность сервера
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 254
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
Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
05.05.2015, 09:38     Проверить соединение с интернетом #6
Цитата Сообщение от fgtmenow Посмотреть сообщение
помоему ему надо всего лишь проверить, есть ли доступ к интернету на уровне системы.
но это не решит всех проблем, только часть
у меня, например, на планшете часто показывает значек что я подключен по wi-fi, а инета нет...его нет у провайдера...там, дальше
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 254
05.05.2015, 09:40     Проверить соединение с интернетом #7
ping 8.8.8.8 + isOnline связка
Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
05.05.2015, 09:47     Проверить соединение с интернетом #8
гугло-днс может быть доступен, а сервер, к которому идет подключение - нет
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 254
05.05.2015, 09:50     Проверить соединение с интернетом #9
по-моему эти три условия достаточны для опредения ситуации разрыва подключения с сервером со стороны приложения
eagl69
4 / 9 / 1
Регистрация: 12.10.2011
Сообщений: 498
05.05.2015, 11:38  [ТС]     Проверить соединение с интернетом #10
Вопрос даже не в том чтобы контролировать соединение с конкретным сервером а в том чтобы определить сам выход в нет и его отсутствие при уже установленном соединении.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
05.05.2015, 11:48     Проверить соединение с интернетом #11
eagl69, может вам нужен heartbeat? Отдельный тред на сервере и на клиенте, ехо сокет, раз в 30 секунд допустим.
Цитата Сообщение от eagl69 Посмотреть сообщение
а вот приложение все еще думает что сокет активен
как так-то? Если сервер рвёт соединение (или же пропал интернет) сокет закрывается на клиенте ведь.
eagl69
4 / 9 / 1
Регистрация: 12.10.2011
Сообщений: 498
05.05.2015, 12:20  [ТС]     Проверить соединение с интернетом #12
Цитата Сообщение от YuraAAA Посмотреть сообщение
как так-то? Если сервер рвёт соединение (или же пропал интернет) сокет закрывается на клиенте ведь.
Зашли в подвал (вам позвонили) интернет пропал, но приложение этого не видит и после появления нета слушает сокет ранее открытый... а сервер соответственно определив что соединение пропало закрыл его.
Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
05.05.2015, 12:53     Проверить соединение с интернетом #13
чем не устраивает вариант с таймаутом socket.setSoTimeout(время_в_миллисек) ?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
05.05.2015, 13:04     Проверить соединение с интернетом #14
И для HttpURLConnection и Jsoup.connect подскажите как таймаут использовать, а то не получается у меня.
Pablito
05.05.2015, 13:12
  #15

Не по теме:

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

Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
05.05.2015, 13:15     Проверить соединение с интернетом #16
Вообще для знатоков вопрос, у меня все работает и определяет наличие интернета, но вот когда есть соединение с wifi, а с внешкой соединения нет, тут тоже кажется таймаут нужен.
Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
05.05.2015, 13:20     Проверить соединение с интернетом #17
елки-палки, я об этом и говорю с начала темы, но меня никто не понимает

можно не проверять есть ли инет и даже wi-fi линк, при попытке открыть соединение вывалится эксепшн
либо сразу - что-то типа IO бла бла, либо по таймауту

вот их о обрабатывать, а смысла проверять включен ли вайфай нету никакого

я не настаиваю что этот метод правильный, андроид я знаю очень поверхностно, но как работает стек TCP/IP и все уровни OSI модели я знаю получше
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
05.05.2015, 13:32     Проверить соединение с интернетом #18
Цитата Сообщение от Паблито Посмотреть сообщение
можно не проверять есть ли инет и даже wi-fi линк
Я об чем и спрашиваю, т.к. хочу выкинуть проверку "есть ли инет" и использовать таймаут.
Как для HttpURLConnection и Jsoup.connect это сделать? Есть пример?
Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
05.05.2015, 13:50     Проверить соединение с интернетом #19
ну у Jsoup.connect точно есть метод timeout() и он работает
проверить легко - поставить там например 10мс и подключение к любому сайту просто не будет успевать отрабатывать
Exception in thread "main" java.net.SocketTimeoutException: connect timed out
HttpURLConnection я не пользовался пока что
а он нужен при наличии Jsoup библиотеки? (я теперь фанат этой штуки)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.05.2015, 14:36     Проверить соединение с интернетом
Еще ссылки по теме:

Соединение с сервером Apache - Программирование Android
Здравствуйте не могу понять что делает setEntity() и последние 3 строки, вот ещё, например при ответе в браузер php генерирует html и в...

Пропадает соединение с сервером - Программирование Android
Использую KryoNet Класс, который создает соединение с сервером, имплементирует Runnable, ибо нельзя в главном потоке создавать никаких...

Https соединение с сертфикатам пользователя - Программирование Android
Доброго времени суток помогите разобраться с андроидами только начинаю дружить основа взята из инета мне нужно установить...

Авторизированное http соединение (coockies) - Программирование Android
Здравствуйте, на сервере авторизация проверяется так: - проверяется есть ли куки (login &amp; pass) - если есть присваивается статус...

Соединение с сервером, передача данных - Программирование Android
Добрый вечер. Такой вопрос: есть некая программа - сервер, написанная на С++ Qt. Там пара вкладок на ней пара ползунков. Это набросок,...


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

Или воспользуйтесь поиском по форуму:
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
05.05.2015, 14:36     Проверить соединение с интернетом #20
Цитата Сообщение от Паблито Посмотреть сообщение
а он нужен при наличии Jsoup библиотеки?
Нет, по крайней мере у меня в импорте класса его нет.
Yandex
Объявления
05.05.2015, 14:36     Проверить соединение с интернетом
Ответ Создать тему
Опции темы

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