2012-02-28 23 views

Odpowiedz

6

Wygląda GetHostEntry robi trochę więcej sprawdzanie błędów i wspiera również Network Tracing

gethostbyname dekompilowana:

public static IPHostEntry GetHostByName(string hostName) 
{ 
    if (hostName == null) 
    throw new ArgumentNullException("hostName"); 
    Dns.s_DnsPermission.Demand(); 
    IPAddress address; 
    if (IPAddress.TryParse(hostName, out address)) 
    return Dns.GetUnresolveAnswer(address); 
    else 
    return Dns.InternalGetHostByName(hostName, false); 
} 

GetHostEntry dekompilowana:

public static IPHostEntry GetHostEntry(string hostNameOrAddress) 
{ 
    if (Logging.On) 
    Logging.Enter(Logging.Sockets, "DNS", "GetHostEntry", hostNameOrAddress); 
    Dns.s_DnsPermission.Demand(); 
    if (hostNameOrAddress == null) 
    throw new ArgumentNullException("hostNameOrAddress"); 
    IPAddress address; 
    IPHostEntry ipHostEntry; 
    if (IPAddress.TryParse(hostNameOrAddress, out address)) 
    { 
    if (((object) address).Equals((object) IPAddress.Any) || ((object) address).Equals((object) IPAddress.IPv6Any)) 
     throw new ArgumentException(SR.GetString("net_invalid_ip_addr"), "hostNameOrAddress"); 
    ipHostEntry = Dns.InternalGetHostByAddress(address, true); 
    } 
    else 
    ipHostEntry = Dns.InternalGetHostByName(hostNameOrAddress, true); 
    if (Logging.On) 
    Logging.Exit(Logging.Sockets, "DNS", "GetHostEntry", (object) ipHostEntry); 
    return ipHostEntry; 
} 
+0

Jeśli znajdziesz się z tych przestarzałych błędu tylko tak jak ja, możesz po prostu łatwo zmienić 'GetHostByName()' z 'GetHostEntry()' na swoim kodzie. – Aryo