如何取得本地IP?(50分)

  • 主题发起人 主题发起人 imstev
  • 开始时间 开始时间
uses WinSock;

var
LocalHost:PHostEnt;
mstr,msg:String;
pb:PByte;
begin
SetLength(mstr,256);
GetHostName(@mstr[1],256);
msg:='';
pb:=@mstr[1];
while pb^<>0 do
begin
msg:=msg+chr(pb^);
Inc(pb);
end;
LocalHost:=GetHostByName(@mstr[1]);
mstr:='';
msg:=msg+Format(' %d.%d.%d.%d',[ord(LocalHost^.h_addr_list^[0]),ord(LocalHost^.h_addr_list^[1]),
ord(LocalHost^.h_addr_list^[2]),ord(LocalHost^.h_addr_list^[3])]);
MessageDlg('Local IP Address: '#13#13+msg,mtInformation,[mbYes],0);
end;
 
Uses 中要加上 WinSock


// returns ISP assigned IP
function TLoginForm.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);
I := 0;
while pptr^ <> nil do begin
result:=StrPas(inet_ntoa(pptr^^));
Inc(I);
end;
WSACleanup;
end;
 
后退
顶部