左都御史钱峰去当铺:公网、内网IP的判断以及获取

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 16:08:48

如何判断自己的IP是公网ip还是内网ip
tcp/ip协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下:
10.0.0.0/8:10.0.0.0~10.255.255.255
172.16.0.0/12:172.16.0.0~172.31.255.255
192.168.0.0/16:192.168.0.0~192.168.255.255
        如果自己机器上网络接口的ip地址落在上述保留地址的范围内,则可以肯定自己处于内网模式下。
内网IP及机器名称获取:
IPSocket=CreateObject("MSWinsock.Winsock")
IPSocket.LocalIP&&内网IP,如果你不是局域网上网就无所谓内外网IP了
IPSocket.localhostname&&计算机名称


公网IP的获取就没这么方便了,我用VF尝试过很多方法但是一直得不到满意的果,
但是突然想到BBS类型的论坛网页上不管你是否登陆都可以显示你的外网IP,何不利用这个来获取呢,呵呵,别笑,实在是逼的没办法了。
代码如下:

公网IP:
loExplorer = CREATEOBJECT("InternetExplorer.Application")
loExplorer.Navigate2("http://www.meizibbs.3322.org/bbs/index.asp")
wait window "正在获取本机的公网IP地址,请稍候!" nowait noclear
DO WHILE loExplorer.readystate <> 4
ENDDO
wait clear
loDoc = loExplorer.Document
lcMyPublicIp = UPPER(loDoc.Body.Innertext)
lcProcura = "您的IP是:"
IF lcProcura $ lcMyPublicIP
   x = AT( lcProcura, lcMyPublicIP )
   IF x > 0
      lcMyIP = SUBSTR(lcMyPublicIP, x+LEN(lcProcura),15)
   ENDIF
   =messagebox("本机的公网IP地址是:"+lcMyIP,64,"信息提示")
else
=messagebox("抱歉,获取本机的公网IP地址失败。",48,"信息提示")
ENDIF
这种获得公网IP的速度就看你选择的网页的速度了,呵呵!

再来个方法,这个应该比上面的那个要快的多:

owsh=createobject("wscript.shell")
owsh.run("command.com /c ping -n 1 -r 9
www.163.com >IP.txt",0,.t.)

生成的IP.txt这个文件的格式为:

Pinging www.cache.split.netease.com [220.181.28.42] with 32 bytes of data:

Reply from 220.181.28.42: bytes=32 time=67ms TTL=52

    Route: 60.180.199.107 ->

           61.174.73.22 ->

           61.174.72.222 ->

           220.186.248.190 ->

           220.186.248.191 ->

           202.97.29.133 ->

           202.97.32.132 ->

           202.97.34.66 ->

           218.30.25.46

Ping statistics for 220.181.28.42:

Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 67ms, Maximum = 67ms, Average = 67ms

完整代码:

owsh=createobject("wscript.shell")
owsh.run("command.com /c ping -n 1 -r 9
www.163.com >IP.txt",0,.t.)
IF FILE('ip.txt')
IF AT('Route',FILETOSTR('ip.txt'))>0
st=FILETOSTR('ip.txt')
ip=SUBSTR(st,AT_C('Route:',st)+6,AT_C('->',st)-AT_C('Route:',st)-6)
=MESSAGEBOX('你的外网:'+ip,'获取成功')
ELSE
=MESSAGEBOX('网络连接失败',信息提示')
ENDIF
DELETE FILE ip.txt
ELSE
=MESSAGEBOX('获取失败','信息提示')
endi

看到没有,文件里面一大堆IP地址,第一个就是我们需要的外网IP地址

其他的代表什么我这里就暂不多说了

细心的话你还可以发现它还可以解析网址的IP地质哦!