如何获取本机真实的外网IP地址

iyghost 2006-03-30 03:01:00
我能够实现通过主机名获取到IP地址,但这个IP地址可能是内部地址,如192.168..,怎样能够获取这个真实的外网的IP地址呢?
...全文
1106 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackie186 2006-04-01
  • 打赏
  • 举报
回复
这不不简单,你找一个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;
cuteant 2006-04-01
  • 打赏
  • 举报
回复
http://www.delphifans.com/dl.asp?no=2&id=2109&size=181

下载这个就可以了,看看Demo和Source
iyghost 2006-04-01
  • 打赏
  • 举报
回复
我是想得到外网IP,局域网内部多台电脑通过一个外网IP上网,怎样得到这个外网IP呢?
纯冰糖 2006-03-30
  • 打赏
  • 举报
回复
楼上的方法好些
纯冰糖 2006-03-30
  • 打赏
  • 举报
回复
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;
xixuemao 2006-03-30
  • 打赏
  • 举报
回复
http://www.delphifans.com/SoftView/SoftView_2109.html

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧