Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 22.04.2011
Сообщений: 47

Проверка наличия соединения GetAdaptersInfo

24.06.2011, 14:12. Показов 1311. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как-то Вы интересовались, как определить соединение с интернет...
К сожалению, тот топик я не нашел, и не знаю нашли ли Вы что хотели.

Вот недавно, в ходе освоения функции GetAdaptersInfo(ai, dwSize) набрел на следующую особенность:
Функция у меня всегда выдавала, что требуемый размер буфера dwSize=640 байт, когда я не в инете, и dwSize=1280 байт - когда в инете, т.е. две структуры IP_ADAPTER_INFO. Функция в любом случае сразу возвращает управление.
В итоге мысля такая: сколько бы функция не возвращала в dwSize (кратно 640) проверяем ai.Type для каждой структуры на предмет равенства MIB_IF_TYPE_PPP. Если нашли, то мы в Dualup!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.06.2011, 14:12
Ответы с готовыми решениями:

Проверка наличия каталога
If ... Then .. Else .. End If Что нужно написать? Просто фишка в чем. Когда программа создает каталог она видет что на...

Проверка наличия доступа к папке (по сети)
Добрый вечер. Два вопроса такого плана: 1. как узнать существует сетевая папка или нет? 2. как вызвать окно аутентификации для...

Проверка наличия положительных элементов массива, равных их индексу
Есть ли среди положительных элементов массива элементы, равные своему индексу, в противном случае выдать сообщение, что таковых нет.

5
Comanche
24.06.2011, 17:09
Спасибо за информацию. Однако, для диал-апа проще использовать RAS API. Когда, конечно, точно знаешь, что в Сеть ходят через диал-ап! - ведь даже если RAS установлен, то ещё не факт, что в Сеть ходят именно через него - вполне может быть ещё и выделенка! Т.е. все существующие RAS-соединения могут быть неактивны, а комп может быть при этом запросто в Сети.

И основная проблема состоит в том, что с уверенностью можно сказать только одно: 'Если RAS не установлен, или же установлен, но число RAS-соединений равно нулю, то для выхода в Сеть RAS НЕ ИСПОЛЬЗУЕТСЯ' ) а толку от этой инфы мало, прямо скажем. Вот если бы точно можно было сказать, что у ДАННОГО компа нет никаких технических возможностей выйти в Сеть, кроме как через модем, то проверку коннекта можно было бы делать хоть твоим способом, хоть обычным через RAS API - вариант с выходом через LAN исключался бы. Но и это было бы не особо надёжно: а вдруг ты под 'гостевым диал-ап соединением' к провайдеру, т.е. деньги на счёт кладёшь?! и ходу тебе будет только на сайт провайдера (пример - московский МТУ-Интел).

Проблема - в том, что как только есть LAN, то нет стопроцентно-точного рецепта сказать, используют ли её для выхода в Сеть (и возможно ли это вообще). Кроме как попробовать выйти в Сеть, конечно ) на чём я и остановился в итоге.
1 / 1 / 0
Регистрация: 22.04.2011
Сообщений: 47
24.06.2011, 17:45  [ТС]
>>Вот если бы точно можно было сказать, что у ДАННОГО компа нет никаких технических возможностей выйти в Сеть, кроме как через модем...
Так, и я о том же: если ни в одной структуре (обычно в самой первой) ai(i).Type <> MIB_IF_TYPE_ETHERNET and ai(i).Type <> MIB_IF_TYPE_TOKENRING, то нет никакой сетевой карты для LAN, соединение может быть только по dialup...
У меня нет возможности проверить выделенку и не заню, что будет в ai(i).Type в этом сдучае, но думаю, что и для него что-то определенное. Вот о чем я...
0
Comanche
24.06.2011, 17:51
Теперь понял. Надо будет проверить на досуге...
1 / 1 / 0
Регистрация: 22.04.2011
Сообщений: 47
24.06.2011, 17:52  [ТС]
>> а вдруг ты под 'гостевым диал-ап соединением' к провайдеру

Если я правильно понял, то GetAdaptersInfo возвращает информацию именно о задействованном оборудовании, а не о том, каким образом это оборудование задействовано, т.е. если есть диал-ап то и будет возвращать инфу об этом гостевой он или нет. К сожалению, это мои предположения. Проверить не могу...
0
Comanche
24.06.2011, 20:58
Конечно ты прав: ну откуда винде знать, гостевое соединение или нет... даже юзер может не знать этого не о том речь, просто как ни крути - проверять наличие коннекта к Сети нужно через попытку осуществления оного, и никак иначе! и по фигу, RAS или LAN, гостевое или нет. Если проверка коннекта нужна ТОЛЬКО для обновления СВОЕЙ программы со СВОЕГО ftp-сервера, то вообще признаком наличия коннекта можно считать доступность этого своего сервера, и всё; и плевать, что при этом больше ничё не работает ) ведь всё равно Инет больше ни для чего ДАННОЙ проге не нужен. А вот если прога даёт юзеру шанс вылазить в Сеть куда-угодно (в т.ч. смотреть почту), то тут надо для себя решить, какой сайт 'пинговать'. Я выбрал для себя парочку Yahoo + Google. Пингую через ICMP (спасибо за совет Мессиру - это самый быстрый вариант!), и если не прошло - то пробую ещё разик по винсоку (запросом заголовка). Если и тут не прошло - то нет коннекта.

Критика принимается )
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.06.2011, 20:58
Помогаю со студенческими работами здесь

Работа с командной строкой (1. FTP-сервер 2. Проверка наличия подключения)
имеется совет: Для восстановления конфигурации выполните команду: put rom-0, например put c:\config\660hw.cfg rom-0 ftp&gt;...

Проверка соединения с MSSQL Server
Проблема в следующем: Необходимо проверить установлена-ли связь с SQL Server. Есть код: Private Sub Form1_Load() Dim...

для Win NT 4.0, проверка соединения с инетом
вышеперечисленные примеры не работают для WIN NT 4.0. может кто-нибудь знает как организовать проверку соединения с инет в Win NT? help!

Проверка наличия соединения с интернет, VC++
Здравствуйте. 1.Подскажите пожалуйста, как я могу проверить, подключен ли компьютер к интернет, и отследить состояние подключения (Т.е....

Проверка наличия интернет соединения
Если в public void onStart() { super.onStart(); } вставить код проверки на включен ли интернет и если не...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru