function GetLocalIP: 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); I := 0; while pptr^[I] <> nil do begin result := StrPas(inet_ntoa(pptr^[I]^)); Inc(I); end; WSACleanup; end;
这是从一个很大得,功能很多得程序里面找出来得,要不你把mail告诉我,我发给你
from moto骆la简单方法:拖一个TIdIPWatch到窗体上 IdIPWatch1.CurrentIP 可以直接得到
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);
I := 0;
while pptr^[I] <> nil do
begin
result := StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
IdIPWatch1.CurrentIP 可以直接得到
我以前是找了一个朋友的web server,反正他们也是正规的公司,专线上网,24小时可访问,我在那儿放了一个页面,仅仅返回client的ip地址。
然后用一个http的控件访问这个页面,取回数据来简单处理一下就得到自己的internet拨号ip。
这个方法非常可靠,编程也方便。