Procedure GetIPAddr(var ts:TStrings);
type
TAddrList = array[0..9] of PinAddr;
PAddrList = ^TAddrList;
var
Phent:PHostEnt;
p:PAddrList;
i:integer;
Buffer:array [0..63] of char;
begin
GetHostName(Buffer, SizeOf(Buffer));
Phent:=GetHostByName(Buffer);
if Phent<>nil then begin
i:=0;
p:=PAddrList(Phent^.h_addr_list);
While P[i]<>nil do begin
ts.Add(StrPas(inet_ntoa(P[i]^)));
inc(i);
end;
end;
end;以上代码只能得到一个地址,请高手给于解答.
type
TAddrList = array[0..9] of PinAddr;
PAddrList = ^TAddrList;
var
Phent:PHostEnt;
p:PAddrList;
i:integer;
Buffer:array [0..63] of char;
begin
GetHostName(Buffer, SizeOf(Buffer));
Phent:=GetHostByName(Buffer);
if Phent<>nil then begin
i:=0;
p:=PAddrList(Phent^.h_addr_list);
While P[i]<>nil do begin
ts.Add(StrPas(inet_ntoa(P[i]^)));
inc(i);
end;
end;
end;以上代码只能得到一个地址,请高手给于解答.
showMessage(StrPas(inet_ntoa(P[i]^)));
ts.Add(StrPas(inet_ntoa(P[i]^)));
TMyIdIpWatch = class(TIdIpWatch)
public
function LocalIPs: TStringList;
end;{ TMyIdIpWatch }function TMyIdIpWatch.LocalIPs: TStringList;
begin
FLocalIpHuntBusy := True;
try
Result := TStringList(GStack.LocalAddresses);
finally
FLocalIPHuntBusy := False;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
aa: TMyIdIpWatch;
begin
aa := TMyIdIpWatch.Create(nil);
ShowMessage(aa.LocalIPs().Text);
end;
2.Windows XP with SP2 + Delphi 7
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;
begintry
try
WSAStartup($101, GInitData);
sLocalIp:='';
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
sLocalIp:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
ListboxIp.Items.Append(sLocalIp);
end;
except
end;
finally
WSACleanup;
end;