0

作業中のアプリケーションがあり、DNSが原因でISPがダウンしていると起動が遅くなる可能性があります。私のISPは昨日3時間ダウンしていたので、起動が常に遅いことがわかるまで、追加したこのコードについてはあまり考えませんでした。このコードはあなたのIPアドレスを返すことになっています。リンクを読んだところ、すぐにそれが必要であることがわかりましたが、少なくとも私のマシンではそうではありません。

ああ、そして昨日インターネットがダウンする前に、私は(oymoron)をXP SP3にアップグレードしました、そして他の問題がありました。

だから私の質問/リクエスト:

  1. 私はこれを正しくやっていますか?
  2. これをマシンで実行した場合、IPアドレスを返すのに39秒かかりますか?それは私のものです。

もう1つの注意点として、パケットキャプチャを実行しましたが、最初の要求は送信されませんでしたが、2番目の要求は送信され、すぐに応答されました。ですから、問題は、脳以外に、私が見逃しているXPSP3で何が起こったのかということです。

最後にもう1つ。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
4

2 に答える 2

1

ここで投稿#7を参照してください修正

于 2010-04-10T12:58:37.380 に答える
0
 A little power shell testing:  Comments marked *



 *returns in < 1 sec.
 PS C:\Documents and Settings\MyPC> [System.Net.Dns]::GetHostAddresses("www.msn.com")


 IPAddressToString : 65.55.17.27
 Address           : 454113089
 AddressFamily     : InterNetwork
 ScopeId           :
 IsIPv6Multicast   : False
 IsIPv6LinkLocal   : False
 IsIPv6SiteLocal   : False

 IPAddressToString : 65.55.17.26
 Address           : 437335873
 AddressFamily     : InterNetwork
 ScopeId           :
 IsIPv6Multicast   : False
 IsIPv6LinkLocal   : False
 IsIPv6SiteLocal   : False


 *takes about 40 seconds
 PS C:\Documents and Settings\MyPC> [System.Net.Dns]::GetHostAddresses("")


 IPAddressToString : 192.168.1.2
 Address           : 33663168
 AddressFamily     : InterNetwork
 ScopeId           :
 IsIPv6Multicast   : False
 IsIPv6LinkLocal   : False
 IsIPv6SiteLocal   : False


 *returns in < 1 sec.
 PS C:\Documents and Settings\MyPC> [System.Net.Dns]::GetHostAddresses("192.168.1.2")


 IPAddressToString : 192.168.1.2
 Address           : 33663168
 AddressFamily     : InterNetwork
 ScopeId           :
 IsIPv6Multicast   : False
 IsIPv6LinkLocal   : False
 IsIPv6SiteLocal   : False


 *takes about 40 seconds
 PS C:\Documents and Settings\MyPC> [System.Net.Dns]::GetHostAddresses("")


 IPAddressToString : 192.168.1.2
 Address           : 33663168
 AddressFamily     : InterNetwork
 ScopeId           :
 IsIPv6Multicast   : False
 IsIPv6LinkLocal   : False
 IsIPv6SiteLocal   : False


 *i thought this should return several addresses
 PS C:\Documents and Settings\MyPC> [System.Net.Dns]::GetHostAddresses("localhost")


 IPAddressToString : 127.0.0.1
 Address           : 16777343
 AddressFamily     : InterNetwork
 ScopeId           :
 IsIPv6Multicast   : False
 IsIPv6LinkLocal   : False
 IsIPv6SiteLocal   : False



 PS C:\Documents and Settings\MyPC>
于 2010-04-09T19:18:58.740 に答える