Как мои приложения для доступа в Интернет узнают, когда мое устройство подключено к сети - PullRequest
0 голосов
/ 09 июня 2019

При наборе названия этого вопроса мне предложили пройти через несколько вопросов, которые имеют явно похожие намерения, но эти вопросы были специфичны для кодов, относящихся к разработке приложений для ios / android / windows, тогда как я хочу понять принцип этих кодовс точки зрения операционной системы.

Итак, допустим, у меня есть телефон с двумя приложениями для чата A и B, которым требуется подключение к сети.Поэтому, когда мой телефон подключается к любой сети, два приложения A и B уведомляют меня о сообщениях, которые я получил в этих приложениях.

Что я хочу знать, так это как приложения узнают, что интернет-соединение теперь доступно.

Я пытался придумать различия по этому поводу, и мои мысли были следующими:

1) Приложения продолжают сканировать входящие байты через регулярные короткие промежутки времени.Как будто он будет искать входящие байты в конкретном программном порте, а из структуры байтов будет пытаться выяснить, принадлежит ли он ему или нет.(в стиле Unix это может быть смоделировано как чтение из некоторого файла устройства, такого как / dev / net).Для доказательства этой идеи я выдвинул неопределенный порядок, в котором я получаю уведомления из разных интернет-приложений с помощью приложений на моем телефоне.Таким образом, это зависит от точного момента, когда мобильные данные включены и какое приложение начинает сканирование в это время.Следующее уведомление может поступить от приложения, сканирование которого запланировано на следующий

2).В ответ на подключение к Интернету генерируется сигнал прерывания, и подпрограмма, соответствующая прерыванию, уведомляет каждое из этих приложений. Затем эти приложения подключаются к своему серверу, чтобы узнать, было ли какое-либо новое сообщение или уведомление.Но я не уверен, как ОС узнает, какие приложения будут нуждаться в интернет-сервисе.В подтверждение этой идеи могу сказать, что IP-адреса устройства могут измениться, так как приложения должны подключаться к своему серверу для уведомления о текущем IP-адресе и порте.

Так что же происходит на уровне операционной системы, когда приложения знают, когда доступно интернет-соединение?Если это второй путь, то как ОС узнает, какое приложение будет требовать подключения к Интернету?

...