
Определение состояния подключения к сети на Ассемблере

Определение состояния подключения к сети на Ассемблере
Вдогонку к недавней статье. Если вы разрабатываете приложение, которое должно работать с какими-то данными в интернете, всегда будет полезно знать, есть ли у компьютера подключение к сети и разрешен ли приложению выход в сеть. В этих ваших интернетах приводят несколько способов решения задачи, но, как и йогурты из рекламы, не все они одинаково полезны. Давайте разберемся, какие функции стоит использовать на практике, а какие нет.
Первый способ основан на получении количества подключений к удаленному серверу с помощью функции RasEnumConnections. Этот способ работает только с модемным подключением, которое в наше время безнадежно устарело и почти нигде не встречается. При подключении через беспроводную или локальную сеть результат функции всегда будет неправильным. Этот способ можно использовать только для того, чтобы определить факт модемного соединения, но не для определения состояния подключения к сети.
Code (Assembler) : Убрать нумерацию
- ; Проверка подключения через RasEnumConnections
- mov [tmp],0
- mov [tmp2],0
- invoke RasEnumConnections,NULL,tmp,tmp2
- cmp [tmp2],0
- je no_internet_connection
Code (Assembler) : Убрать нумерацию
- ; Проверка подключения через InetIsOffline
- invoke InetIsOffline,NULL
- cmp eax,TRUE
- je no_internet_connection
Code (Assembler) : Убрать нумерацию
- szUrl db 'https://yandex.ru',0
- ...
- ...
- ; Проверка подключения через InternetCheckConnection
- FLAG_ICC_FORCE_CONNECTION = 1
- invoke InternetCheckConnection,szUrl,FLAG_ICC_FORCE_CONNECTION,NULL
- cmp eax,FALSE
- je no_internet_connection
Code (Assembler) : Убрать нумерацию
- ; Проверка подключения через InternetGetConnectedState
- invoke InternetGetConnectedState,tmp,NULL
- cmp eax,FALSE
- je no_internet_connection
Code (Assembler) : Убрать нумерацию
- ; Проверка подключения через IsNetworkAlive
- invoke IsNetworkAlive,tmp
- cmp [tmp],0
- je no_internet_connection
Просмотров: 1209 | Комментариев: 4

Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
dirbeer
(05.08.2019 в 13:28):
NoNaMe, Delphi?

Андрей
(03.07.2019 в 00:05):
Воу-воу, диалап на картинке!

ManHunter
(13.05.2019 в 15:08):
NoNaMe, не совсем так. Эта функция определяет вообще ВОЗМОЖНОСТЬ подключения компа к сети, то есть наличие сетевой карты, модема, адаптера wifi и всякого подобного железа. Во всех этих случаях результат всегда будет положительный. А вот подключен комп через эти устройства к интернету или нет - это не узнать. Так что увы, не годится.
Добавил еще один способ с IsNetworkAlive.
Добавил еще один способ с IsNetworkAlive.

NoNaMe
(13.05.2019 в 14:51):
function IsInternetConnected: Boolean;
begin
Result := GetSystemMetrics(SM_NETWORK) and 1 > 0;
end;
begin
Result := GetSystemMetrics(SM_NETWORK) and 1 > 0;
end;

Добавить комментарий
Заполните форму для добавления комментария
