功能:获得本机的所有ip地址(内网、外网)
代码如下:
procedure GetIPAddr(List: TStrings);
type
TaPInAddr = array [0..100] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;
begin
List.Clear;
WSAStartup($101, GInitData);
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
List.Add(StrPas(inet_ntoa(pptr^[I]^)));
Inc(I);
end;
WSACleanup;
end
代码如下:
procedure GetIPAddr(List: TStrings);
type
TaPInAddr = array [0..100] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;
begin
List.Clear;
WSAStartup($101, GInitData);
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
List.Add(StrPas(inet_ntoa(pptr^[I]^)));
Inc(I);
end;
WSACleanup;
end
在两台机器上的运行结果不一样
1.pc-1 只能显示出内网ip,公网ip显示不出来.
2.pc-2 内网、外网ip都可以显示出来。
pc-1:adsl modem 设置成“路由”方式
pc-2:adsl modem 有的是“EnterNet 500”拨号连接。(ppp)
初学网络编程,请各位高手指教。
你好
adsl改成“路由方式”以后,公网ip还是随机分配的啊,