Форум: "Сети";
Текущий архив: 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