我有一个我一直在处理的应用程序,当我的 ISP 由于 DNS 而关闭时,启动速度可能会很慢。昨天我的 ISP 宕机了 3 个小时,所以我没有多想我添加的这段代码,直到我发现它总是启动缓慢。此代码应该返回您的 IP 地址,并且我对链接的阅读表明应该是立即的,但至少在我的机器上不是。
哦,昨天在互联网出现故障之前,我将(oymoron)升级到 XP SP3,并且遇到了其他问题。
所以我的问题/要求:
- 我这样做对吗?
- 如果你在你的机器上运行它,返回你的 IP 地址需要 39 秒吗?它在我的身上。
另一个注意事项,我做了一个数据包捕获,第一个请求没有通过网络发送,但第二个请求成功了,并且很快得到了答复。所以问题是除了大脑之外,我还缺少 XP SP3 中发生了什么。
最后一点。如果我解决了 FQDN,一切都很好。
Public Class Form1
'http://msdn.microsoft.com/en-us/library/system.net.dns.gethostaddresses.aspx
'
'excerpt
'The GetHostAddresses method queries a DNS server
'for the IP addresses associated with a host name.
'
'If hostNameOrAddress is an IP address, this address
'is returned without querying the DNS server.
'
'When an empty string is passed as the host name,
'this method returns the IPv4 addresses of the local host
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim stpw As New Stopwatch
stpw.Reset()
stpw.Start()
'originally Dns.GetHostEntry, but slow also
Dim myIPs() As System.Net.IPAddress = System.Net.Dns.GetHostAddresses("")
stpw.Stop()
Debug.WriteLine("'" & stpw.Elapsed.TotalSeconds)
If myIPs.Length > 0 Then Debug.WriteLine("'" & myIPs(0).ToString)
'debug
'39.8990525
'192.168.1.2
stpw.Reset()
stpw.Start()
'originally Dns.GetHostEntry, but slow also
myIPs = System.Net.Dns.GetHostAddresses("www.vbforums.com")
stpw.Stop()
Debug.WriteLine("'" & stpw.Elapsed.TotalSeconds)
If myIPs.Length > 0 Then Debug.WriteLine("'" & myIPs(0).ToString)
'debug
'0.042212
'63.236.73.220
End Sub
End Class