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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
#1

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

14.06.2011, 16:19. Просмотров 1510. Ответов 3
Метки нет (Все метки)

Здравствуйте.
Нужно программно проверить есть ли соединение с интернетом.
Обычно, это можно сделать так:
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     Наличие интернет-соединения
Посмотрите здесь:

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

C++ проверить файл по интернет ссылке на наличие - C++
У меня есть куча ссылок 3600 штук, как при помощи с++ проверить эти ссылки на битые или нет? ...

Написать функцию целого типа, определяющую наличие в первой строке матрицы наличие седловой точки. - C++
ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 4. Написать функцию целого типа,...

сопротивление соединения - C++
При сопротевлении R1,R2,R3 соединены параллельно. Найти сопротивление соединения.

Найти сопротивление соединения - C++
#include &lt;iostream.h&gt; int main() (найти сопротивление соединения) { ...

Определить общее сопротивление соединения - C++
Доброго времени суток! Пожалуйста, помогите мне, начинающему программисту дописать программу. Условие задачи: А) Три сопротивления...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
14.06.2011, 17:56     Наличие интернет-соединения #2
как вариант, основанный на томже пинге, использовать днс запрос.
http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx
если интернет упал то запрос должен провалится
можно ещё сделать некий аналог клиент-серверного приложения, серверное приложение сигнализирует о падении интернета.
Илиже можно сделать connect() к определённому ip адресу(именно к ип адресу, а не к хосту, дабы избежать днс запроса) с маленьким тайм аутом.
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.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2011, 01:27     Наличие интернет-соединения
Еще ссылки по теме:

MySql: ошибка открытия соединения БД - C++
Раньше всё работало замечательно, сейчас появляется неведомая мне ошибка. Пробовал 2 ситуации: 1. Открыл соединение, выполнил запрос...

Не компилируестя прога соединения чисел - C++
Ет прога соединяет числа в переменную ищу ошибки не могу найти(1 час проискал)не нашел помогите плз. От код. #include &lt;iostream&gt; using...

Составить из резисторов цепь соединения - C++
Помогите с задачкой пожалуйста с написание програмгного кода Дано N резисторов различных номиналов. Необходимо выбрать несколько...

Наличие элемента в контейнере - C++
Как установить с помощью функций lower_bound и upper_bound наличие элемента в map с известным ключом и значением?

Наличие бита в байте - C++
Подскажите, правильна ли реализация проверки наличия бита в байте #define MARK 0x02 .. if (dataRead &amp; MARK) { ...

Проверьте, на наличие ошибок - C++
Накалякал код, по методичке, компилятора на компе нет. Проверьте, пожалуйста, скомпилируется ли код и будет ли он соответствовать заданию:...


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

Или воспользуйтесь поиском по форуму:
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
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     Наличие интернет-соединения
Ответ Создать тему
Опции темы

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