النظام.صافي.Dns.GetHostAddresses("")
-
25-09-2019 - |
سؤال
لدي طلب لقد تم العمل على ذلك يمكن أن تكون بطيئة في البداية عندما ISP بلدي باستمرار بسبب DNS.ISP بلدي كان لمدة 3 ساعات يوم أمس ، لذلك لم أفكر كثيرا حول هذا قطعة من التعليمات البرمجية كنت قد أضفت حتى وجدت أنه دائما بطيئة في البداية.هذا الرمز هو من المفترض أن يعود عنوان IP الخاص بك و قراءتي رابط يشير إلى أنه يجب أن يكون فوريا ، ولكن الأمر ليس كذلك على الأقل على الجهاز الخاص بي.
أوه, أمس قبل الإنترنت ذهب إلى أسفل ، ترقية (oymoron) XP SP3 لديهم مشاكل أخرى.
لذا أسئلتي / طلب:
- أنا أفعل هذا صحيح ؟
- إذا قمت بتشغيل هذا الجهاز يستغرق 39 ثانية العودة إلى الخاص بك عنوان IP ؟ لا على الألغام.
ملاحظة واحدة أخرى ، لم التقاط حزم و الطلب الأول لم يذهب على السلك ، ولكن لم الثانية ، وكان الرد بسرعة.لذا فإن السؤال هو ما حدث في 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
المحلول
انظر المشاركة رقم 7 هنا Fix
نصائح أخرى
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>