一、需求:
  由于系统调试需要一个相对的公网IP,但公司是通过ADSL方式上网,每次产生的IP只能保持一段时间相对固定,当IP发生变化后,就需要打开路由器的WEB管理界面,确定新的IP地址是多少,然后将新地址告诉测试系统使用。每次都这样操作,让我这种懒人,感觉很不爽。于是一直在想寻找一种简单的方式,来很容易的知道当前IP地址是多少,这期间尝试了许多方法,但都只是限于获取本机网络地址信息,对要解决的问题帮助不大。
  今天看到CSDN上一位网友介绍的方法,比较可行而且易于实现,于是花点时间,做了个小程序,经过测试,能满足需要。
二、基本原理
1. 访问,并获取指定网页内容,如:http://vbnet.mvps.org/resources/tools/getpublicip.shtml;
2. 分析网页内容;
3. 找出IP地址,显示;
 
三、实现代码(Delphi7+FastStrings+Indy9)

 Code
Code
procedure TForm1.Button1Click(Sender: TObject);
var
  iPos : integer;
  i : integer;
  sResponse : TStrings;
  sTemp : string;
begin
  sResponse := TStringList.Create;
  sResponse.Text := IdHTTP1.Get('http://vbnet.mvps.org/resources/tools/getpublicip.shtml');
  for i := 0 to sResponse.Count - 1 do
  begin
    iPos := SmartPos('var ip',sResponse.Strings[i]);
    if iPos > 0 then
    begin
      sTemp := sResponse.Strings[i];
      break;
    end;
    iPos := -1;
  end;
  if sTemp <> '' then
  begin
    iPos := SmartPos('''',sTemp);
    if iPos > 0 then
    begin
      edtIP.Text := Copy(sTemp,iPos + 1,Length(sTemp) - iPos);
      edtIP.Text := Copy(edtIP.Text,1,Length(edtIP.Text) - 1);
    end;
  end;
  sResponse.Clear;
  sResponse.Free;
  sResponse := nil;
end;
 
 
四、结果:

 
五、文件下载:
https://files.cnblogs.com/gis_gps/GetADSLIP.zip