以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何获取本机的IP地址  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=24372)

--  作者:jianyuan
--  发布时间:2012/10/12 8:59:00
--  如何获取本机的IP地址
请教一下,用代码如何获取本机的IP地址?说明书上没有这方面的说明。
--  作者:飞
--  发布时间:2012/10/12 9:03:00
--  

Dim HostName As String = System.Net.Dns.GetHostName
Dim LocalIPAddress As System.Net.IPAddress = System.Net.Dns.GetHostByName(HostName).AddressList.GetValue(0)

Msgbox(LocalIPAddress)


--  作者:jianyuan
--  发布时间:2012/10/12 14:18:00
--  
谢谢飞!但代码只能显示本机的局域网的IP地址,是否可能显示公网的IP。
--  作者:lin_hailun
--  发布时间:2012/10/12 15:30:00
--  
以下是引用jianyuan在2012-10-12 14:18:00的发言:
谢谢飞!但代码只能显示本机的局域网的IP地址,是否可能显示公网的IP。

只能是访问一次外网才知道。下面是简单例子。

Dim web As New System.Windows.Forms.WebBrowser()
web.Navigate("http://city.ip138.com/city.asp")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop

Dim elems As System.Windows.Forms.HtmlElementCollection
Elems = web.Document.GetElementsByTagName("Body")   \'根据标签得到数据集合
Dim data As String = elems(0).InnerText
Dim start As Integer = data.IndexOf("[") + 1
Dim en As Integer = data.IndexOf("]")
msgbox(data.SubString(start, en - start))
[此贴子已经被作者于2012-11-22 11:09:01编辑过]

--  作者:飞
--  发布时间:2012/10/12 17:37:00
--  

\'我用的疼迅的网页,同时获取IP与归属地,返回值格式为:IP|归属地

 

On Error Resume Next
Dim httpURL As New System.Uri("http://ip.qq.com/")
Dim httpReq As System.Net.HttpWebRequest = System.Net.WebRequest.Create(httpURL)
httpReq.Method = "GET"
Dim httpResp As System.Net.HttpWebResponse = httpReq.GetResponse()
httpReq.KeepAlive = False
Dim reader As New IO.StreamReader(httpResp.GetResponseStream, System.Text.Encoding.GetEncoding(-0))
Dim respHTML As String = reader.ReadToEnd()

With CreateObject("vbscript.regexp")
    .Global = True
    .MultiLine = True
    .ignorecase = True
    .Pattern = "当前的IP为.*?\\<.*?\\>([^<>]+)[\\s\\S]*?IP所在地为.*?\\<.*?\\>([^<>]+)"
    If .test(respHTML) Then
        With .Execute(respHTML)(0)
            Return Replace(.submatches(0) & "|" & .submatches(1), "&nbsp;", " ")
        End With
    End If
End With
Return