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 地址
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; ======================即可看到你的IP
to jackie168(星星知我心) 没那么多代码吧?uses WinSock;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;
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 地址
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;
======================即可看到你的IP
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;