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

Наличие интернет-соединения - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
14.06.2011, 16:19     Наличие интернет-соединения #1
Здравствуйте.
Нужно программно проверить есть ли соединение с интернетом.
Обычно, это можно сделать так:
C++
1
2
3
4
5
6
7
8
9
 DWORD flags;
   flags = INTERNET_CONNECTION_MODEM +
           INTERNET_CONNECTION_LAN +
           INTERNET_CONNECTION_PROXY;
 
   if(!InternetGetConnectedState(&flags, 0)) 
      cout<<"n";
   else
      cout<<"y";
но дело в том что у меня соединение специфическое, оно устанавливается "расшариванием" интернет-соединения на одном компьютере, а на своем я указываю в качестве основного шлюза и DNS-сервера IP-адрес раздающего, для подключения по локальной сети. В итоге InternetGetConnectedState всегда сообщает что соединение с интернетом есть, даже когда его нет.

Можно все таки как-то проверить есть ли интернет?
Пробовал с помощью утилиты ping:

C++
1
system("ping [url]www.google.com[/url] -n 1 -l 1 echo >> connect.log");
как вариант пойдет, но занимает слишком много времени.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2011, 16:19     Наличие интернет-соединения
Посмотрите здесь:

C++ Не компилируестя прога соединения чисел
C++ сопротивление соединения
C++ Найти сопротивление соединения
Составить из резисторов цепь соединения C++
Проверка наличия соединения с интернет, VC++ C++
C++ Написать функцию целого типа, определяющую наличие в первой строке матрицы наличие седловой точки.
Проверьте, на наличие ошибок C++
C++ Проверка на наличие файла
C++ Проверка на наличие флешки
C++ Наличие элемента в контейнере
MySql: ошибка открытия соединения БД C++
Определить общее сопротивление соединения C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nxnx
Формучанин
361 / 292 / 16
Регистрация: 02.11.2010
Сообщений: 1,227
14.06.2011, 17:56     Наличие интернет-соединения #2
как вариант, основанный на томже пинге, использовать днс запрос.
http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx
если интернет упал то запрос должен провалится
можно ещё сделать некий аналог клиент-серверного приложения, серверное приложение сигнализирует о падении интернета.
Илиже можно сделать connect() к определённому ip адресу(именно к ип адресу, а не к хосту, дабы избежать днс запроса) с маленьким тайм аутом.
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
14.06.2011, 22:52  [ТС]     Наличие интернет-соединения #3
Цитата Сообщение от nxnx Посмотреть сообщение
как вариант, основанный на томже пинге, использовать днс запрос.
http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx
если интернет упал то запрос должен провалится
можно ещё сделать некий аналог клиент-серверного приложения, серверное приложение сигнализирует о падении интернета.
Илиже можно сделать connect() к определённому ip адресу(именно к ип адресу, а не к хосту, дабы избежать днс запроса) с маленьким тайм аутом.
Спасибо, думаю connect мне подойдет идеально.

Но, очередная проблема, не могу никак ограничить таймаут, пишу:

C++
1
2
3
4
5
6
struct timeval tv;
tv.tv_sec = 3;
tv.tv_usec = 0;
setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv,  sizeof (tv));
//....
connect ( ... );
но никак не реагирует на это, при отключенном интернете ошибку выдает лишь секунд через 20.
nxnx
Формучанин
361 / 292 / 16
Регистрация: 02.11.2010
Сообщений: 1,227
15.06.2011, 01:27     Наличие интернет-соединения #4
может добавить ещё и SO_SNDTIMEO
вобще нужно изучить это http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
ответ наверняка гдето там кроется
Yandex
Объявления
15.06.2011, 01:27     Наличие интернет-соединения
Ответ Создать тему
Опции темы

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