Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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-интерфейсах.


Наверх

Титульная страница Поиск, карта сайта Написать письмо