C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Определение подключения к интернету, Механизм проверки
Aptem
Отправлено: 24.08.2004, 13:24


Мастер участка

Группа: Участник
Сообщений: 349



Привет, всем.

Есть функция, которая определяет подключен ли к инету компьютер или нет. Есть локальная сеть из 3 компов, один из которых имеет dial-up доступ, а остальные 2 компа подключаются к инету через первый.

Нужна программа, которая будет сидеть в трее и показывать например красный цвет иконки если инета нет и зеленый если есть. Вопрос вот в чем, как программе узнать когда проверить соединение.

Поку вижу два способа:
1. Запихнуть функцию проверки в таймер
2. Запихнуть функцию проверки в ApplicationOnIdle

Насчет второго не очень уверен. Как ваши соображения на этот счет? Когда же проверять соединение?

Наверное, у вас напрашивается вопрос: "А почему сам не возьмешь и не проверишь?". Вопрос правильный, но я сейчас в отъезде и немогу взять и попробывать, поэтому чтобы не терять драгоценное время решил узнать вашего мнения.

Большое спасибо за внимание. Жду ответов.
Иван
Отправлено: 24.08.2004, 13:35


Машинист паровоза

Группа: Участник
Сообщений: 207



Этот вопрос на форуме уже поднимался много раз!
Когда я пытался это сделать я проверял в таймере.

QUOTE
Есть функция, которая определяет подключен ли к инету компьютер или нет.


А какая это функция у Вас есть такая хорошая, что понимает подключен ли комп к интернету, и действительно ли "правильно она понимает" есть соединение или нет? Я пока не рассматриваю какое это соединение по RAS или LAN!

Aptem
Отправлено: 24.08.2004, 14:08


Мастер участка

Группа: Участник
Сообщений: 349



CODE
DWORD flag;
 AnsiString str = "";

 if ( InternetGetConnectedState ( &flag, NULL ) )
   str += "Internet connection is present\n";

 else str += "No Internet connection\n";

 if ( flag & INTERNET_CONNECTION_LAN )
   str += "The system uses a local area network to connect to the Internet";

 if ( flag & INTERNET_CONNECTION_MODEM )
   str += "The system uses a modem to connect to the Internet";

 if ( flag & INTERNET_CONNECTION_PROXY )
   str += "The system uses a proxy server to connect to the Internet\n";

 ShowMessage ( str );


1. А что, у вас есть сомнения насчет подобных функций.
2. А почему нельзя попробывать через ApplicationOnIdle?
Иван
Отправлено: 24.08.2004, 16:01


Машинист паровоза

Группа: Участник
Сообщений: 207



Эту функцию я пробовал,что то не вязалось(давно было)
по моему на машине где не было ни интернета, ни сети, ни модема
функция вернула кучу всяких соединений.
QUOTE

The system uses a local area network to connect to the Internet
The system uses a modem to connect to the Internet
The system uses a proxy server to connect to the Internet


лучше работала другая функция, но у нее был недостаток, она могла распознать только соединение по RAS!!


нашел на форуме

почитайте, там все это обсуждалось

Отредактировано Иван — 24/08/2004, 17:05

Вернуться в Вопросы программирования в C++Builder