169 похожих чатов

Вот ты написал пинг 8.8.8.8, получил ответ. это есть подключение

или нет?

14 ответов

7 просмотров

Ну смотря что мне нужно. Если мне нужен сервис яндекса, я буду пинговать именно его. Так как 8888, ни какого отношения к нему не имеет, в прочем, как и к основному гуглу.

Evgeny-Chesnokov Автор вопроса
Андрей
Ну смотря что мне нужно. Если мне нужен сервис янд...

нет, стоп, ты же сам уже отказался разговаривать о том, что тебе нужно, ты настаиваешь весь день на формулировке именно "просто проверить подключение к сети, а не к какому-то серверу", что с этой формулировкой случилось? проехали?

Evgeny Chesnokov
нет, стоп, ты же сам уже отказался разговаривать о...

Ну потому, что я вел вопрос в контексте, почему разработчики не дали нам возможность, гарантированно проверить, что пользователь, не запретил нашему приложению доступ в сеть. Фаерволом, отключением кабеля и тд. Мне нужен был сам факт. А если речь пошла о реальном проекте, то он конечно с чем то работает и нам логично проверять именно доступность этого ресурса.

Evgeny-Chesnokov Автор вопроса
Андрей
Ну потому, что я вел вопрос в контексте, почему ра...

Вы получите ошибку под определенном кодом

Evgeny Chesnokov
доступ В КАКУЮ сеть?

Да понял я уже про это. Что нет понятия конкретной сети. Но они же тем не менее сообщают, что есть подключение без доступа к интернету. Вот и дали бы разрабам такую возможность.

Evgeny-Chesnokov Автор вопроса
Андрей
Да понял я уже про это. Что нет понятия конкретной...

так такая возможность есть, мы же обсуждали это сегодня, ты пропустил? NetworkCapabilities.NET_CAPABILITY_INTERNET

Да, видимо зачитался и из головы контекст частично выпал.

Evgeny-Chesnokov Автор вопроса
Андрей
Да, видимо зачитался и из головы контекст частично...

короче, смотри как это на практике делается. как ты уже понял, обычно тебя волнует доступ до твоего нужного ресурса, а не до всей сети в целом. поэтому конечно люди умеют гонять тестовые запросы до своего бэкэнда. но главное тут в том, что даже такая проверка не спасает тебя вообще ни от чего. вот твой сервер пинговался, а пока ты сформировал к нему уже собственно нужный тебе запрос - сервер уже умер/пользователь въехал в тоннель/на счету у пользователя кончились деньги и твое приложение осталось без доступа до твоего сервера. а ты в этот момент уже в сокет пишешь/читаешь. в этот момент происходит следующее: либо чтение/запись зависнет до таймаута, а потом кинет эксепшен, либо сразу вылетит эксепшен, типа, сорян, ошибка ввода-вывода. и вот этот эксепшен ты обязан в приложении обрабатывать в любом случае, не важно, сделал ты до этого проверку на наличие подключения или нет. по результатам обработки такого эксепшена ты обычно решаешь тут же попробовать снова сделать нужный запрос. но и он умирает точно так же. поэтому ты решаешь подождать (не спамить же непрерывно, не жечь же трафик и батарейку) и спустя, например, 5 секунд попробовать еще раз. А потом спустя 10. 20. 40. минуту. пять минут. Это называется "exponential backoff policy". Но что делать, если твоя экспонента уже накапала так, что запросы происходят раз в полчаса, а интернет вдруг появился? Вот для этого и существуют сервисы типа ConnectivityManager или NetworkCapabilities: они позволяют тебе подписаться (листенером) на событие "о, дали сеть" или там "сменился вайфай" или там "переключились с мобильной связи на вайфай". И тогда можно совершить, например, внеурочную попытку снова сделать нужный запрос, не дожидаясь таймаута, ведь у нас есть определенные основания полагать, что ситуация изменилась. Итого: - обязательная обработка ошибки ввода-вывода - экспоненциальная задержка повторных попыток, ограниченная сверху - подписка на события сетевых сервисов И вот это вещи, которые тебе придется делать в любом случае, не важно, сделал ты перед этим проверку доступности сети, или нет. А главное, что вот в этом раскладе тебе "проверка доступности сети" вообще не потребуется - её роль выполняет твой первоначальный запрос. Понятно?

Evgeny Chesnokov
короче, смотри как это на практике делается. как ...

+ отличная информация. Большое спасибо за науку. Сеть очень интересна мне и эта неделя посвящена именно ей.

Evgeny Chesnokov
короче, смотри как это на практике делается. как ...

Как говорится разжевал, переварил, и высрал)))

MeLlasT
+

Evgeny Chesnokov рейтинг 20 (+1) [+20 -0].

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

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
17
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
или вы считаете муит дает знание?
супер_лох_3000 альфа версия
12
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
А кто такой мужчина в твоем понимании Азиз?
who?です 🐈
11
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Ну значит тебе повезло, мы же про транк говорим оба?
Александр (Rouse_) Багель
11
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
Карта сайта