Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.02;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.031 c
1-1103186444
TUser
2004-12-16 11:40
2005.01.02
finalization


14-1102759016
Ломброзо
2004-12-11 12:56
2005.01.02
Иконки Microsoft


8-1096567161
suharew
2004-09-30 21:59
2005.01.02
Как сделать уменьшенный вариант фотки??


4-1100606813
FRick
2004-11-16 15:06
2005.01.02
Пройгрование AVI файлов в любой системе


14-1102680374
Agent13
2004-12-10 15:06
2005.01.02
Windows XP