function GetLocalIP: string;
var
wVersionRequested: WORD;
wsaData: TWSAData;
p: PHostEnt;
s: array[0..128] of Char;
begin
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
try
GetHostName(@s, 128);
p := GetHostByName(@s);
Result := StrPas(iNet_ntoa(PInAddr(p^.h_addr_list^)^));
finally
WSACleanup
end
end;
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
Result := '';
WSAStartup($101, GInitData);
try
GetHostName(Buffer, SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe <> nil then
begin
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do
begin
result := StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
end;
finally
WSACleanup;
end;
end;
-------------------------
然后在form的OnShow 事件写入
edit1.text:=LocalIP;
var
LEN:DWORD;
NAME:PCHAR;
HOST:PHOSTENT;
IP,ipstr,IPTOTAL,IPPART,IPALL:STRING;
i:integer;
wsdata:twsadata;
begin
if wsastartup(2,wsdata)<>0 then
begin
msg.Caption :='WS2_32.DLL初始化失敗!';
abort;
end;
LEN:=30;
GETMEM(NAME,30);
GETCOMPUTERNAME(NAME,LEN);
HOST:=GETHOSTBYNAME(NAME);
IF HOST=NIL THEN
BEGIN
MSG.Caption :='IP地址為空';
HALT;
END
ELSE
BEGIN
IPTOTAL :=HOST.H_NAME;
IPPART:=CHR(HOST.H_ADDRTYPE+64);
FOR I:=1 TO 4 DO
BEGIN
IP:=INTTOSTR(ORD(HOST.H_ADDr^[i-1]));
ipstr:=ipstr+ip;
if i<4 then
ipstr:=ipstr+'.'
Else IPALL :=ipstr;
END;
END;
wsacleanup;
end;
ipall中就是你的ip 地址