功能:获得本机的所有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

解决方案 »

  1.   

    现在的问题:
      在两台机器上的运行结果不一样
      1.pc-1 只能显示出内网ip,公网ip显示不出来.
      2.pc-2 内网、外网ip都可以显示出来。
      

  2.   

    我想造成这样的原因和adsl modem 设置有关,
      pc-1:adsl modem 设置成“路由”方式
      pc-2:adsl modem 有的是“EnterNet 500”拨号连接。(ppp)
    初学网络编程,请各位高手指教。
      

  3.   

    assl modem设成"路由"方式,是一个默认ip,于本机无关了!应该查查adsl厂商资料
      

  4.   

    anbeel
    你好
    adsl改成“路由方式”以后,公网ip还是随机分配的啊,
      

  5.   

    是分配给adsl了,因为adsl会自动拨号申请.