局域网通过硬件网关上网,想在局域网中知道当前的WAN IP,不知道用DELPHI如何实现?

解决方案 »

  1.   

    这种问题在大富翁上提过千百遍了。
    转贴自大富翁某处(忘了是谁的了):
    function 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^[I] <> nil do begin 
          result:=StrPas(inet_ntoa(pptr^[I]^)); 
          Inc(I); 
        end; 
        WSACleanup; 
    end;
      

  2.   

    正规的方法好像是无解。楼上的没看清题目。看看这文章。
    http://expert.csdn.net/Expert/topic/1863/1863501.xml?temp=.3904993
    里面介绍了一个反弹,呵呵,偶也刚看到。
    就是DOWN一个有IP地址的网页,然后解析得到IP,呵呵。