编程获取ADSL下的IP地址

一、需求:

  由于系统调试需要一个相对的公网IP,但公司是通过ADSL方式上网,每次产生的IP只能保持一段时间相对固定,当IP发生变化后,就需要打开路由器的WEB管理界面,确定新的IP地址是多少,然后将新地址告诉测试系统使用。每次都这样操作,让我这种懒人,感觉很不爽。于是一直在想寻找一种简单的方式,来很容易的知道当前IP地址是多少,这期间尝试了许多方法,但都只是限于获取本机网络地址信息,对要解决的问题帮助不大。

  今天看到CSDN上一位网友介绍的方法,比较可行而且易于实现,于是花点时间,做了个小程序,经过测试,能满足需要。

二、基本原理

1. 访问,并获取指定网页内容,如:http://vbnet.mvps.org/resources/tools/getpublicip.shtml;

2. 分析网页内容;

3. 找出IP地址,显示;

 

三、实现代码(Delphi7+FastStrings+Indy9)

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;

 

四、结果:

 

五、文件下载:

http://files.cnblogs.com/gis_gps/GetADSLIP.zip

转载于:https://www.cnblogs.com/gis_gps/archive/2008/10/31/1323844.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值