我能够实现通过主机名获取到IP地址,但这个IP地址可能是内部地址,如192.168..,怎样能够获取这个真实的外网的IP地址呢?

解决方案 »

  1.   

    http://www.delphifans.com/SoftView/SoftView_2109.html
      

  2.   

    uses Winsock;procedure TfrmMain.btnConversionClick(Sender: TObject);
     var
      WSAData: TWSAData;
      HostEnt: PHostEnt;
      IPAddress: string;
      addr: dword;
     begin
      edtName.Clear;
      WSAStartup(2, WSAData);
      IPAddress:=edtAddress.Text;
      try
       addr := inet_addr(PChar(IPAddress));
       HostEnt:= GetHostByAddr(@addr, Length(IPAddress), PF_INET);
       edtName.Text:=HostEnt.h_name;
      except
       ShowMessage('无效的IP地址');
      end;  WSACleanup;
    end;
      

  3.   

    我是想得到外网IP,局域网内部多台电脑通过一个外网IP上网,怎样得到这个外网IP呢?
      

  4.   

    http://www.delphifans.com/dl.asp?no=2&id=2109&size=181下载这个就可以了,看看Demo和Source
      

  5.   

    这不不简单,你找一个ASP的空间,上面写一个ASP程序,再用INDY的http组件访问这个ASP程序不就有本机的
    外网IP了!
    这个ASP程序如下:
    <html>
    <%
    sip=Request.ServerVariables("LOCAL_ADDR")
    cip=Request.ServerVariables("REMOTE_ADDR")
    %>
    <body>
    IP=<%=cip%>
    </body>
    </html>调用:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       WebBrowser1.Navigate('www.eastrise.cn/ip.asp');
       edit1.Text:=IdHTTP1.Get('http://www.eastrise.cn/ip.asp');
    end;