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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Наличие связи, проверка - есть или нет 
V
    Опции темы
MacTep
Дата 11.3.2008, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

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



Как на 100% (ну или хотя бы на 99%) проверить, есть ли у данного компьютера в данный момент времени связь с интернет. И не важно, как подключается комп к сети (диал ап, выделенка, wi-fi, с прокси сервером или нет). Есть ли такой надежный вариант проверки?


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
greenpc
Дата 11.3.2008, 09:18 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



"пингануть" адрес в сети
PM   Вверх
MetalFan
Дата 11.3.2008, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


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

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



... который 100%(ну или хотябы 99%) отзовется на пинг


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
MacTep
Дата 11.3.2008, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

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



Пингануть не так-то уж и просто, господа присяжные заседатели. ;)


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
MetalFan
Дата 11.3.2008, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


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

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



а в чем собсно сложность? idIcmpClient не подходит?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
MacTep
Дата 12.3.2008, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

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



Парни, ну неужели писал бы сюда вопрос, если бы знал как. Подскажи более подробно, если знаешь.


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Alix
Дата 12.3.2008, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


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

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



Выдержка из статьи в DelphiWorld:
Цитата
Функция InternetGetConnectedState() 

Чтобы удостоверится в бесполезности этой функции для наших целей, достаточно посмотреть ее описание в MSDN: 

"You cannot rely solely on the fact that InternetGetConnectedState returning TRUE means that you have a valid active Internet connection. It is impossible for InternetGetConnectedState to determine if the entire connection to the Internet is functioning without sending a request to a server. This is why you need to send a request to determine if you are really connected or not. You can be assured however that if InternetGetConnectedState returns TRUE, that attempting your connection will NOT cause you to be prompted to connect to the default Internet Service Provider." 

Единственно полезным в этой функции является то, что если уж она и возвратила TRUE, то при попытке соединения с Интернет вам не будет предлагаться сначала подключиться к нему. 


Поэтому рекомендую вызвать ее и если она возвратила true, вызвать следующую функцию (цитата из msdn):
Цитата
InternetCheckConnection
Allows an application to check if a connection to the Internet can be established.

BOOL InternetCheckConnection(
  LPCTSTR lpszUrl,
  DWORD dwFlags,
  DWORD dwReserved
);

Parameters
lpszUrl 
[in] Pointer to a null-terminated string that specifies the URL to use to check the connection. This value can be NULL. 
dwFlags 
[in] Options. FLAG_ICC_FORCE_CONNECTION is the only flag that is currently available. If this flag is set, it forces a connection. A sockets connection is attempted in the following order:
  If lpszUrl is non-NULL, the host value is extracted from it and used to ping that specific host. 
  If lpszUrl is NULL and there is an entry in the internal server database for the nearest server, the host value is extracted from the entry and used to ping that server. 
dwReserved 
[in] Reserved. Must be zero. 
Return Values
Returns TRUE if a connection is made successfully, or FALSE otherwise. Use GetLastError to retrieve the error code. ERROR_NOT_CONNECTED is returned by GetLastError if a connection cannot be made or if the sockets database is unconditionally offline.



--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
MIX55
Дата 12.3.2008, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


много работы
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 208
Регистрация: 23.10.2005
Где: Здесь

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



Вот компонент XNetDetect v.2.0

Цитата

NetDetect is a non-visual Delphi component being able to keep your application informed about any change of the Internet connectivity status. If you want to handle the event when your PC connects/disconnects from the Internet, XNetDetect is for you. The new version comes with a new strategy of detecting internet connectivity.


У меня на Dual-up определяет  100% (ну или 99 % кому как  smile )

P.S. Отпишитесь кто проверял на других типах соединений
--------------------
Hарод, а как в дельфи писать паскалевские проги....?*********************************************Жизнь слишком коротка, чтобы писать на Assembler'e
PM MAIL ICQ   Вверх
Alix
Дата 12.3.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


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

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



в этом компоненте используется следующая функция:
Код
function IsConnectedToInternet(host: string; timeOut: Cardinal): boolean;
var hInet, hInetUrl: Pointer;
begin
  Result := false;
  hInet := InternetOpen('XNetDetect v2.0', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  try
    InternetSetOption(hInet, INTERNET_OPTION_CONNECT_TIMEOUT, @timeOut, sizeOf(timeOut));
    hInetUrl := InternetOpenUrl(hInet,
                                PChar(host),
                                nil,
                                0,
                                INTERNET_FLAG_KEEP_CONNECTION or INTERNET_FLAG_NO_CACHE_WRITE or
                                INTERNET_FLAG_RELOAD or INTERNET_FLAG_NO_AUTO_REDIRECT,
                                0);
    if Assigned(hInetUrl) then
    begin
      InternetCloseHandle(hInet);
      Result := true;
    end
    else
      InternetCloseHandle(hInet);
  except
    InternetCloseHandle(hInet);
  end;
end;

вызывается она там из потока, чтобы предотвратить зависание основного потока на время соединения. Результат проверки доступен, как я понял, потом по событию OnConnectionStatus. Также в компоненте есть таймер, так что проверка может осуществляться с заданной периодичностью. При изменении статуса происходит событие OnConnectionStatusChanged. Мое мнение, что если проверка нужна всего один раз, то такой компонент - излишество. Особенно, если пишется приложение без vcl, т.к. компонент его активно использует.


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
MacTep
Дата 12.3.2008, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

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



Спасибо за исчерпывающий ответ всем.


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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