F
FreeFish
Unregistered / Unconfirmed
GUEST, unregistred user!
我在学习一个获取本机IP的函数,可惜有些语句我看不懂,希望各位大虾能够详细指点,
以解心头迷团,万分感谢!
function LocalIP : String;
type
TaPInAddr = Array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
// (问题1 :为什么要定义一个TaPInAddr类型,PInAddr是何指针类型?)
var
Phe : PHostEnt;
//(问题2 : HostEnt结构中h_addr_list属性的内容是什么?)
PPtr : PaPInAddr;
Buffer : Array[0..63] of Char;
i : integer;
GInitData : TWSAData;
begin
WSAStartUp(2,GInitData);
Result := '';
GetHostName(Buffer,SizeOf(Buffer));
Phe := GetHostByName(Buffer);
if Phe=nil then Exit;
Pptr := PaPInAddr(Phe^.h_addr_list);
//(问题3 : 上面这条语句是什么意思,指针变量能够这样用吗?)
i := 0;
//(问题4 : 下面这个循环是什么意思? Result难道就是所获取的IP地址吗?为什么?)
While Pptr^<>nil do
begin
Result := StrPas(INet_Ntoa(Pptr^^));
Inc(i);
end;
end;
以解心头迷团,万分感谢!
function LocalIP : String;
type
TaPInAddr = Array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
// (问题1 :为什么要定义一个TaPInAddr类型,PInAddr是何指针类型?)
var
Phe : PHostEnt;
//(问题2 : HostEnt结构中h_addr_list属性的内容是什么?)
PPtr : PaPInAddr;
Buffer : Array[0..63] of Char;
i : integer;
GInitData : TWSAData;
begin
WSAStartUp(2,GInitData);
Result := '';
GetHostName(Buffer,SizeOf(Buffer));
Phe := GetHostByName(Buffer);
if Phe=nil then Exit;
Pptr := PaPInAddr(Phe^.h_addr_list);
//(问题3 : 上面这条语句是什么意思,指针变量能够这样用吗?)
i := 0;
//(问题4 : 下面这个循环是什么意思? Result难道就是所获取的IP地址吗?为什么?)
While Pptr^<>nil do
begin
Result := StrPas(INet_Ntoa(Pptr^^));
Inc(i);
end;
end;