5
Na MSDN wymienia GetHostByName
jest przestarzały. Zamiennik to GetHostEntry
. Jaka jest ich różnica?Różnica między GetHostEntry a GetHostByName?
Na MSDN wymienia GetHostByName
jest przestarzały. Zamiennik to GetHostEntry
. Jaka jest ich różnica?Różnica między GetHostEntry a GetHostByName?
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;
}
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