Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как опредилить подключён ли пользователь к инету, Определяем находиться ли юзер в инете 
:(
    Опции темы
fuckerok
Дата 8.11.2004, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 30.3.2004
Где: спб

Репутация: нет
Всего: нет



Хочу написать программу примерно следушего типа.....

Если пользователь подключён к инету, то программа выполняет какю либо процедуру, если же юзер не подключён, то программа ожидает пока он не подключиться (допустим каждые пять мин опять проверяеть состояние конекта).
Нашёл несколько способов в делфи ворд, но что-то не один из них не работает smile

Конечно можно было сделать проверять ИП, если не 127.0.0.1, то значит юзер подключён, но тут возникает вопрос куда? мОжет локалка у него, а моя прога будет обращаться к серверу отправки почты майла.рю smile
По этому прошу написать пример определения конекта именно к инету! smile
--------------------
PM MAIL ICQ   Вверх
oleg1973
Дата 8.11.2004, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



в АПИ есть
GetInetConnectionStatus
или народный способ пингануть ченить
или попытатся сделать gethostbyname



--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
p0s0l
Дата 8.11.2004, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 1
Всего: 112



Проверяй, есть ли соединение с каким-нибудь хостом...
В принципе, можно сделать просто перевод DNS-имени в IP-адрес какого-нибудь "microsoft.com" - этого думаю будет достаточно.
Типа такого:
Код
function IsInetConnected : boolean;
var
 wsa : TWSAData;
begin
 WSAStartup ($0202, wsa);
 Result := gethostbyname('microsoft.com') <> nil;
 WSACleanup;
end;

Добавлено @ 11:40
oleg1973 меня опередил smile


--------------------
С уважением, г-н Посол.
PM   Вверх
SoWa
Дата 9.11.2004, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 3
Всего: 74



if InternetGetConnectedState(nil,0) then //Если подключен, то...
begin
...
end;


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Vit
Дата 9.11.2004, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



FAQ!


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
fuckerok
Дата 17.11.2004, 07:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 30.3.2004
Где: спб

Репутация: нет
Всего: нет



Вот ещё в код забыли вы добавить
Код

Uses WinSock;

Без этого не работает, а не все про это помнят smile
--------------------
PM MAIL ICQ   Вверх
AriX
Дата 20.11.2004, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 16.6.2003

Репутация: нет
Всего: 19



ИМХО самый верный способ проверки соединения с инетом - это запрос на какой-нибудь сайт, который 99,9% в сети (типа microsoft.com, hotmail.com, mail.ru итд).
Таким способом, можно проверять соединение и через проксик.
Вот как это примерно делается:
Код
function CheckConnection: boolean;
begin
 Result := true;
 if Settings.ProxyParams.Use then // Если соединятся через проксик...
   with httpCheckConnection.ProxyParams do begin // httpCheckConnection - это TIdHttp - можно кинуть на форму, можно сделать внутри функции
     ProxyServer := Settings.ProxyParams.Server;
     ProxyPort := StrToInt(Settings.ProxyParams.Port);
     ProxyUsername := Settings.ProxyParams.Username;
     ProxyPassword := Settings.ProxyParams.Password;
   end;
 try
   httpCheckConnection.Head('http://microsoft.com/');
 except
   on EIdReadTimeout do begin // По таймауту обрабатываем исключение
     // Здесь пишем что-нибудь типа Application.MessageBox('No connection', 'Error', MB_ICONERROR);
     Result := false;
   end;
 end;
end;

У меня сделано примерно так. Можно конечно доработать, но принцип я думаю ясен smile

p0s0l
Цитата
В принципе, можно сделать просто перевод DNS-имени в IP-адрес какого-нибудь "microsoft.com" - этого думаю будет достаточно.

Этот способ плох тем, что если человек сидит через проксю, то реально проверить если коннект не получится - до ДНС он может и дотянется, а дальше никуда не вылезет smile
PM MAIL   Вверх
Vit
Дата 23.11.2004, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Цитата(fuckerok @ 7.11.2004, 23:49)
По этому прошу написать пример определения конекта именно к инету!



Со 100% гарантией задача неразрешима.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
AriX
Дата 30.11.2004, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 16.6.2003

Репутация: нет
Всего: 19



Vit
А выше написанный способ чем может быть плох - просто самому интересно smile
PM MAIL   Вверх
Vit
Дата 1.12.2004, 05:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Потому что может стоять например фильтрик который позволяет тебе в инете ходить только на Yahoo - ты по нему проверил инет - есть, а куды не ткнёшься - никуда пойти нельзя. Yahoo или MS или чего ещё может тоже иногда падать... Твой пример на самом деле один из наиболее хороших способов который даёт наиболее точную инфу о возможности выхода в инет, но тоже без 100% гарантии.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
AriX
Дата 2.12.2004, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 16.6.2003

Репутация: нет
Всего: 19



Vit
А ну если так smile
Согласен, но это уж совсем маловероятно ;)
PM MAIL   Вверх
oleg1973
Дата 2.12.2004, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



ну немнога не согласен
это InternetGetConnectedState окромя TRUE&FALSE еще кучку параметров возвращает
таких как тип соеденения к примеру
RAS PROXY e.t.c



--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Akina
Дата 2.12.2004, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



пинги и геты - сакс, потому как могут спровоцировать нежелательные побочные эффекты (дозвон, к примеру).



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0808 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.