Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];

Вниз

internet connection   Найти похожие ветки 

 
Green Templar   (2004-10-11 13:50) [0]

Как определить подключён ли ты к интернету?


 
GuAV ©   (2004-10-11 14:07) [1]

статья тут есть
http://www.delphimaster.ru/articles/connect-inet.html


 
DVM ©   (2004-10-11 17:40) [2]

Никак. Никто не докажет обратное.


 
cerber1 ©   (2004-10-12 00:35) [3]

Удачно открыть ИЕ.


 
Green Templar   (2004-10-12 16:56) [4]

<font color=#00aa00>Спасибо, Guav!</font>


 
Дмитрий Ботвин   (2004-10-13 09:23) [5]

Я думаю это самый быстрый способ:

uses
  WinInet;

{...}

function IsConnectedToInternet: Boolean;
var
  dwConnectionTypes: DWORD;
begin
  dwConnectionTypes :=
    INTERNET_CONNECTION_MODEM +
    INTERNET_CONNECTION_LAN +
    INTERNET_CONNECTION_PROXY;
  Result := InternetGetConnectedState(@dwConnectionTypes, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsConnectedToInternet then
    ShowMessage("Ты в инете :-)))")
  else
    ShowMessage("Тебя там нет :-(((")
end;


 
Vit@ly ©   (2004-10-13 14:50) [6]

2 Дмитрий Ботвин   (13.10.04 09:23) [5]
У меня почему-то независимо от подключения, всегда показывает соединение с инетом.
На одном из сайтов нашел другой пример, у меня работает.

uses WinSock;

function BlockingHookProc: Boolean; stdcall;
begin
 { Returns False to end Winsock internal testing loop }
 Result := False;
 if GetTickCount < InitialTick then DifTick := $FFFFFFFF - InitialTick + GetTickCount
 else
   DifTick := GetTickCount - InitialTick;
   { Limit time expired, then cancel Winsock operation }
   if (DifTick > WaitTimeMs) and WSAIsBlocking then WSACancelBlockingCall;
end;

function IsConnectedToNet(HostIP: string; HostPort, CancelTimeMs: Word;
   FirstOctet: Byte; PError: PChar): Boolean;
 var
   GInitData: TWSADATA;
   SockDescript: TSocket;
   SockAddr: TSockAddr;
   NameLen: Integer;

   procedure SaveError(Proc: string; const LastError: Integer);
   begin
     StrLCopy(PError, PChar(Proc + " - Error no." + IntToStr(LastError)), 255);
   end;

 begin
   Result := False;
   WaitTimeMs := CancelTimeMs;
   if PError <> nil then PError[0] := #0;
   if WSAStartup($101, GInitData) <> 0 then
   begin
     if PError <> nil then SaveError("WSAStartup", WSAGetLastError);
     Exit;
   end;

   try
     begin
       if PError <> nil then SaveError("WSASetBlockingHook", WSAGetLastError);
       Exit;
     end;

     try
       SockDescript := Socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
       if SockDescript = INVALID_SOCKET then
       begin
         if PError <> nil then SaveError("Socket", WSAGetLastError);
         Exit;
       end;

       try
         SockAddr.sin_family := AF_INET;
         SockAddr.sin_port := 0;    
         SockAddr.sin_addr.S_addr := 0;
         if Bind(SockDescript, SockAddr, SizeOf(SockAddr)) <> 0 then
         begin
           if PError <> nil then SaveError("Bind", WSAGetLastError);
           Exit;
         end;

         if Connect(SockDescript, SockAddr, SizeOf(SockAddr)) <> 0 then
         begin
           Result := (WSAGetLastError = WSAECONNREFUSED) or
             (WSAGetLastError = WSAEINTR) or
             (WSAGetLastError = WSAETIMEDOUT);

           if PError <> nil then SaveError("Connect", WSAGetLastError);
         end
         else
         begin
           NameLen := SizeOf(SockAddr);
           Result := (GetPeerName(SockDescript, SockAddr, NameLen) = 0);
           if not Result and (PError <> nil) then
             SaveError("GetPeerName", WSAGetLastError);
         end;
       finally
         CloseSocket(SockDescript);
       end;
     finally
       WSAUnhookBlockingHook;
     end;
   finally
     WSACleanup;
   end;
 end;

procedure TForm1.Button1Click(Sender: TObject);
begin
//  62.118.251.42 ValueHost   2000 2004 ‡ЂЋ  ‚нЎ •®бвЁ­Ј  ђ®ббЁ©бЄЁҐ ‚ҐЎ-‘ҐаўҐа 
KConnected := IsConnectedToNet("62.118.251.42", 80, 1000, 3, PError);

 if StrLen(PError) > 0 then
   ShowMessage("IsConnectedToNet (" + IntToStr(Integer(KConnected)) + ") returned error " + PError)
                       else
   ShowMessage("IsConnectedToNet");
end;


 
Reindeer Moss Eater ©   (2004-10-13 15:49) [7]

А если 62.118.251.42 в дауне, то значит я "не подключен к инету"?

А если я в офлайне, но мне сменили адрес на 62.118.251.42, то я в сети?


 
Vit@ly ©   (2004-10-13 16:04) [8]

В общем-то верно. Думаю, что нужно проверять по "надежному" IP, а еще "убедительнее" по IP своего провайдера :)


 
wal ©   (2004-10-13 16:27) [9]

>В общем-то верно. Думаю, что нужно проверять по "надежному" IP, а еще "убедительнее" по IP своего провайдера :)
Проверять надо то, что нужно в данный момент, а то проверишь ты, что провайдер доступен, но это еще совсем не значит, что у провайдера канал не "упал". А Интернет это или интранет или еще что-нибудь - это вопрос последний.

С уважением.


 
Vit@ly ©   (2004-10-13 17:37) [10]


> но это еще совсем не значит, что у провайдера канал не "упал".
>

Мне кажется, что если провайдер упал канал, то ты вряд будешь в онлайне.
А в самом вопросе не идет речь о том
> что нужно в данный момент
, а о подключении к инету


 
Piter ©   (2004-10-13 18:24) [11]

Как только кто-нибудь из людей даст определение что такое интернет - я отвечу как определить подключен ли ты к нему :)


 
S@shka ©   (2004-10-13 18:50) [12]

Риторический вопрос :)


 
Vit@ly ©   (2004-10-13 20:21) [13]

2
> Piter ©   (13.10.04 18:24) [11]
> Как только кто-нибудь из людей даст определение что такое
интернет - я отвечу как определить подключен ли ты к нему > :)

Я, в частности, этого определения не знаю. И до сих пор не пойму с помощью каких средств Piter отправил это сообщение, я его получил. Интернет видимо здесь и рядом не проходил.
А "определение" - кому оно нужно?


 
wal ©   (2004-10-14 09:51) [14]

>А "определение" - кому оно нужно?
Я сижу в локалке, в Инет выхожу через прокси, весьма успешно пишу это сообщение. Внимание вопрос - подключен я к интернету или нет?

С уважением.


 
Piter ©   (2004-10-14 18:10) [15]

Vit@ly ©   (13.10.04 20:21) [13]

твое острословие просто восхитительно. Такого тонкого чувства юмора я давно не встречал...

А "определение" - кому оно нужно?

вероятно, тем, кто хочет
"определить подключён ли ты к интернету?"


 
Sniron ©   (2004-10-14 22:44) [16]

можешь посмотреть сдесь, (сам не читал).
http://sources.ru/delphi/delphi_check_internet_connection.shtml


 
Sniron ©   (2004-10-14 22:45) [17]

можешь посмотреть здесь, (сам не читал).
http://sources.ru/delphi/delphi_check_internet_connection.shtml


 
Rouse_ ©   (2004-10-14 22:58) [18]

Теоретически инет - аналог большой локальной сети...
Классически я могу соединиться с www.microsoft.com который будет находиться на соседнем компьютере...
Отсюда следует - интернет является несколько абстрактным понятием, а с абстракцией нельзя установить связь :)
Можно установить связь с компьютером находящимся не в твоей "подсети"...


 
Vit@ly ©   (2004-10-14 23:43) [19]

2 Rouse_ ©   (14.10.04 22:58) [18]
А все-таки, что покажет компиляция http://sources.ru/delphi/delphi_check_internet_connection.shtml на компе, который классически соединился с www.microsoft.com, который находится на соседнем компьютере...
ЗЫ. мне очень понравилось такое решение


 
Rouse_ ©   (2004-10-15 09:27) [20]

> [19] Vit@ly ©   (14.10.04 23:43)
Не в курсе, проверить негде...



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.035 c
4-1100547443
Rocket
2004-11-15 22:37
2005.01.02
Низкоуровневая работа с HDD


14-1103053860
Verg
2004-12-14 22:51
2005.01.02
ARP шторм. Да, вот так бывает...


3-1101976169
Sholoma
2004-12-02 11:29
2005.01.02
MySQL


14-1102721809
Piter
2004-12-11 02:36
2005.01.02
Кто-нибудь пользовался Skype?


1-1103292855
artifical intellect
2004-12-17 17:14
2005.01.02
TChart - глюки у него или у меня?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский