![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
IP адрес выданный провайдером [D6, WinXP]
Dush © (2006-06-02 14:49:00)Доброго времени суток!
Подскажите пожалуйста как можно определить IP адрес выданный провайдером. Сложность в том, что на машине есть сетевая карта для локалки и подключен модем. При подключении интернета провайдер динамически назначает IP-адрес. Вот его и надо узнать.
Или подскажите где искать информацию.
thaddy (2006-06-19 20:20:00) [1]This may help :)
[CODE]
program ipvcl;
// IP info, by Thaddy de Koning
uses
Windows, classes, sysutils, urlmon, winsock;
function GetTempFile:String;
var
Path:String;
Len:Cardinal;
begin
Len := GetTempPath(0,nil);
SetLength(Path,Len);
GetTempPath(Len,PChar(Path));
SetLength(Result, MAX_PATH);
GetTempFileName(PChar(Path),nil,0,PChar(Result));
Setlength(Result,Strlen(PChar(Result)));
end;
// obtains your outside world IP.
function GetWanIP:String;
var
TempList: Tstrings;
len: integer;
DestFile:String;
const
SourceFile = ' http://www.whatismyip.com/';
begin
DestFile:=GetTempFile;
if UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = S_OK then
begin
TempList:= Tstringlist.create;
try
Templist.loadfromfile(DestFile);
DeleteFile(PChar(DestFile));
Result:=TempList[4];
finally
TempList.Free;
end;
Len:=Length(Result)-31;
if len >= 7 then //0.0.0.0
Result:= Copy(Result,24,Len)
end;
end;
// obtain the local IP and hostname
function GetIPFromHost(var HostName, IPaddr, WSAErr: string): Boolean;
var
HEnt: pHostEnt;
WSAData: TWSAData;
T:TSockAddrIn;
begin
Result := False;
if WSAStartup($0101, WSAData) = S_OK then
try
IPaddr := '';
Setlength(Hostname,100);
if GetHostName(PChar(HostName), length(HostName)) = S_OK then
begin
SetLength(HostName,Strlen(Pchar(HostName)));
HEnt := GetHostByName(PChar(HostName));
CopyMemory(@T.sin_Addr,PChar(Hent^.h_addr_list^),Hent^.h_length);
IpAddr:=inet_ntoa(T.sin_addr);
Result := True;
end
finally
WSACleanup;
end
else
WSAErr:=SysErrorMessage(WSAGetLastError);
end;
var
Host, IP, Err: string;
begin
if GetIPFromHost(Host, IP, Err) then
messagebox(0,PChar('Your Hostname: '+host+#13+
'Your Dialup or LAN IP: '+IP+#13+
'Your WAN IP: '+GetWanIp),'Network Info',MB_OK or MB_ICONINFORMATION)
else
MessageBox(0,PChar(Err),'',MB_OK or MB_ICONERROR);
end.
[/CODE]
Сергей М. (2006-06-02 15:05:00) [2]
> мне нужно в своей программе это определить
Если ты не умеешь организовать программный ввод/вывод для консоли - тебе в "Начинающие"... Или в "Общие" (как карта ляжет)...
> можно ли при помощи системных событий отследить момент подключения
> к интеренету?
Нельзя.
Потому что "подключиться к Интернету" нельзя.
Dush (2006-06-02 15:01:00) [3]но мне нужно в своей программе это определить.
и еще вопрос - можно ли при помощи системных событий отследить момент подключения к интеренету?
Сергей М. (2006-06-02 14:58:00) [4]Самое простое - запустить программно IPCONFIG.EXE и программно же проанализировать выводимую им информацию об IP-интерфейсах.