如何获取本机在Internet上的IP地址是很多朋友非常关心的问题。由于现在的上网方式多种多样,通过分析网页返回信息的方法应该是目前最有效的了,今天看了几个帖子后深受启发,写了一个获取公网IP的函数,自己用着还可以,请朋友们帮忙试用一下,看看有什么问题没有。
说明:需要一个Inet控件,另外因为要读网页,根据网速的不同,返回函数值会需要一定的时间。
Private Sub Command1_Click()
MsgBox GetPublicIP
End Sub
Private Function GetPublicIP() As String
Dim b() As Byte, s As String, n1 As Integer, n2 As Integer
b() = Inet1.OpenURL("http://ip.changeip.com", 0)
s = CStr(b())
If InStr(1, s, "<!--IPADDR=", vbTextCompare) Then
n1 = InStr(1, s, "<!--IPADDR=") + Len("<!--IPADDR=")
n2 = InStr(n1, s, "-->")
GetPublicIP = Mid(s, n1, n2 - n1)
Else
GetPublicIP = ""
End If
End Function
说明:需要一个Inet控件,另外因为要读网页,根据网速的不同,返回函数值会需要一定的时间。
Private Sub Command1_Click()
MsgBox GetPublicIP
End Sub
Private Function GetPublicIP() As String
Dim b() As Byte, s As String, n1 As Integer, n2 As Integer
b() = Inet1.OpenURL("http://ip.changeip.com", 0)
s = CStr(b())
If InStr(1, s, "<!--IPADDR=", vbTextCompare) Then
n1 = InStr(1, s, "<!--IPADDR=") + Len("<!--IPADDR=")
n2 = InStr(n1, s, "-->")
GetPublicIP = Mid(s, n1, n2 - n1)
Else
GetPublicIP = ""
End If
End Function
解决方案 »
- 输出参数为游标的存储过程如何调用?
- WINXP 下怎么才能让应用程序先于 explorer.exe 运行呢
- 自动登陆问题?(高手请)
- 请教Dll的做法(2)
- 如何将一幅PICTUERE中的图片用二进制保存到文件中?然后再读出来?要求不要写在硬盘上
- access数据库中的字段 cdate 是‘日期时间型’变量,怎么在查询中用到它
- 大家好,用vb写程序如何让计算结果显示64位以上的多位小数?
- 高人啊,请进来指教吧: 关于远程自动化服务器编程的问题,在线讨论....1000分都可以-
- 快了急死人了,如何获取CPU ID号
- 在Active dll中(asp调用该组件)调用数据库操作的方法就"扑街"了,请高手指点?
- 如何在VB程序中获取服务器的时间呢?现在只知道服务器的名称.
- 高分求做中国象棋游戏的思路!!!!!!!!!!
b() = Inet1.OpenURL("http://ip.changeip.com", 0)
这句可以看出点问题来,我们恐怕无法保证ip.changeip.com这个站点的寿命
另外还有一点,由于Inet的OpenURL操作需要一定的时间,如果在此时间内重复调用此函数,就会出错,所以希望朋友们进行完善一下。