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

Вниз

Online/Offline   Найти похожие ветки 

 
Groove_   (2002-12-11 19:41) [0]

Как узнать: в онлайне комп или нет и если в онлайне, какой у него ип? Заранее спасибо


 
xyz   (2002-12-12 01:57) [1]

сперва узнать ИП
(или через компонент или через функцию, к-х до фига не сайте)
а потом если ип 127.0.0.1 - то подключения нет


 
Groove_   (2002-12-12 09:36) [2]

А если ип например от локальной сети (у меня например 192.168.100.104 - локальный, а в инете 10.10.8.54)
как узнать когда комп находится в инете??


 
Ihor Osov'yak   (2002-12-13 01:20) [3]

Хвилософский вопрос, однако... А что такое инет и где он начинается? К примеру - вот соединился я с провайдером через дайлап, а от него канал, что далее в мир, лежит... В инете я или не в инете?

Имхо, самое верное решение - пинговать какой-то уделенный сервер, что работает постоянно, тот же microsoft.com...
А чтобы при пинге не вылезла дайлап-дозвонка, если сидим на дайлате, то можно для начала поюзать что-то типа InternetGetConnectedState...

Я, к примеру, юзаю такой модулек:

unit uInetTools;

interface

uses
Windows, WinInet;

type
TConDescription = ( cdModem, { Local system uses a modem to connect to the Internet }
cdLan, { Local system uses a local area network to connect to the Internet }
cdUsesProxy, { Local system uses a proxy server to connect to the Internet }
cdModemBusy, { not used }
cdRasInstalled, { Local system has RAS installed }
cdOffline, { Local system is in offline mode }
cdConfigured { Local system has a valid connection to the Internet,
but it may or may not be currently connected }
);



TConDescriptions = set of TConDescription;


function inet_IsConnected: boolean; overload;
function inet_IsConnected(var ConDes: TConDescriptions): boolean; overload;
function inet_IsConnected(var ConDes: TConDescriptions; var sConName : string): boolean; overload;


implementation

uses
Sysutils
,classes
;

const
{ these are already defined into WinInet.pas }
//INTERNET_CONNECTION_MODEM = 1;
//INTERNET_CONNECTION_LAN = 2;
//INTERNET_CONNECTION_PROXY = 4;
//INTERNET_CONNECTION_MODEM_BUSY = 8;

{ from the W2K SDK }
INTERNET_RAS_INSTALLED = $10;
INTERNET_CONNECTION_OFFLINE = $20;
INTERNET_CONNECTION_CONFIGURED = $40;

const
winetdll = "wininet.dll";

{ from the W2K SDK }
function InternetGetConnectedStateEx(lpdwFlags: LPDWORD;
lpszConnectionName: LPSTR;
dwNameLen: DWORD;
dwReserved: DWORD): BOOL;
stdcall; external winetdll name "InternetGetConnectedStateExA";



function inet_IsConnected: boolean;
var
dwConnectionTypes : DWORD;
begin
dwConnectionTypes := 0;
Result := InternetGetConnectedState(@dwConnectionTypes, 0);
end;


function inet_IsConnected(var ConDes: TConDescriptions): boolean;
// Description : detects an internet connection
// returns the connection description into the ConDes

var
S : string;
begin
Result := inet_IsConnected(ConDes, S);
end;


function inet_IsConnected(var ConDes: TConDescriptions; var sConName : string): boolean;
var
dwCTp : DWORD;
Buffer : array[0..MAX_PATH - 1] of char;
begin
dwCTp := 0;
Result := InternetGetConnectedStateEx(@dwCTp, Buffer, Sizeof(Buffer)-1, 0);

if Result then sConName := StrPas(Buffer);

ConDes := [];

if ( (dwCTp and INTERNET_CONNECTION_CONFIGURED ) > 0 )
then Include(ConDes, cdConfigured );
if ( (dwCTp and INTERNET_CONNECTION_LAN ) > 0 )
then Include(ConDes,cdLan);
if ( (dwCTp and INTERNET_CONNECTION_MODEM ) > 0 )
then Include(ConDes, cdModem );
if ( (dwCTp and INTERNET_CONNECTION_OFFLINE ) > 0 )
then Include(ConDes,cdOffline );
if ( (dwCTp and INTERNET_CONNECTION_PROXY ) > 0 )
then Include(ConDes,cdUsesProxy );
if ( (dwCTp and INTERNET_RAS_INSTALLED ) > 0 )
then Include(ConDes,cdRasInstalled);

end;



end.



 
Rouse_   (2002-12-13 01:44) [4]

> xyz © (12.12.02 01:57)
> а потом если ип 127.0.0.1 - то подключения нет

В корне не верно (не хочу обидеть), это раз, второе, прочитайте статью на форуме, о определении состояния подключения, очень, кстати, грамотно расписанно, в третьих можно воспользоваться примером Ihor Osov"yak © (13.12.02 01:20), но, даже на вскидку данный пример не будет давать верный результат в очень многих случаях.

Желаю успехов


 
Ihor Osov'yak   (2002-12-13 02:10) [5]

2 Rouse_ © (13.12.02 01:44)


> не будет давать верный результат в очень многих случаях.


Дык я говорил, сначала так, чтобы не нарватся на подымающийся дайлап (ибо когда разрешен автодозвон и работаем по дайлапу то при пинге дозвон активизируется), а потом если эти функции сказали OK - пинговать чего-то далекое .... (для меня это может быть Москва, для Вас - майкрософт).. Внимательно читайте весь постинг ...


 
Delphi5.01   (2003-01-07 04:25) [6]

A zachem paritsa?

Uses winSock

Function GetLocalIP: String;
type
TaPInAddr = Array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: Array[0..63] of Char;
GInitData: TWSAData;
begin
WSAStartup($101, GInitData);
GetHostName(Buffer, SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe = nil then Exit;
pPtr := PaPInAddr(phe^.h_addr_list);
Result:=inet_ntoa(pptr^[0]^);
WSACleanup;
end;


 
Alex Konshin   (2003-01-07 09:32) [7]

2 Groove_ : У тебя не может быть адрес в интернете = 10.10.8.54
Итак, где же у тебя интернет?


 
Black Rawen   (2003-01-07 11:10) [8]

Это не провайдерский IPшник, а прокся, как я понял...


 
Anatoly Podgoretsky   (2003-01-07 11:23) [9]

Может и провайдерский, они часто выдают клиентам адреса своей локальной сети


 
Groove_   (2003-01-07 14:03) [10]

вы правы.. это прокси... Delphi5.01 хороший код привёл .. я им и воспользовался :)


 
grab3   (2003-01-07 19:19) [11]

А если проверять подключение к какому нибудь серверу, например microsoft.com(:-)), или сразу к нескольким серверам. Ведь IP может меняться даже если подключаться и не к инету.


 
?!   (2003-01-07 19:50) [12]

хммм ... а если я (страшный админ) дал возможность юзерам работать только через WinGate прокси ?
как ты буш вычислять имя прокси ? а если в настройках IE у юзера лажа написана, и он ими не пользуется ? ;-))

(ногами не пинать - уже перехожу на нормальный FreeBSD :-)



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

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

Наверх





Память: 0.48 MB
Время: 0.009 c
3-16962
shu_3d
2003-02-17 11:01
2003.03.06
Создание таблиц в программе


1-17065
Виталик
2003-02-25 14:27
2003.03.06
Сообщение


1-17167
Makhanev A.S.
2003-02-23 16:52
2003.03.06
Filename из TFileStream


14-17392
Шоломицкий
2003-02-18 22:00
2003.03.06
Какой компонент?


1-17136
aade
2003-02-22 20:34
2003.03.06
Закраска ячеек в StringGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский