我想检查是否存在某个电子邮件域。
当Dns.GetHostEntry(domain)
抛出异常时,我知道该域名不存在。
Dns.GetHostEntry(domain)
成功,那么域确实存在,或者即使Dns.GetHostEntry(domain)
成功,也不意味着(尚未)该域存在?s.Connect
无法连接时,我可以说同样的话吗?我的意思是如果连接抛出一个异常,我可以说这个域不存在吗?如果(1)为真,那么为了检查域是否存在(1)就足够了吧?
public static bool Lookup(string domain)
{
if (domain == null) throw new ArgumentNullException("domain");
try {
IPHostEntry ipHost = Dns.GetHostEntry(domain);
var endPoint = new IPEndPoint(ipHost.AddressList[0], _dnsPort);
return Transfer(endPoint);
}
catch (SocketException ex)
{
++attempts;
}
return false;
}
public static bool Transfer(IPEndPoint endPoint)
{
int attempts = 0;
while(attempts <= _attempts)
{
try
{
var s = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
s.Connect(endPoint);
}
catch (SocketException ex)
{
++attempts;
}
finally
{
s.Close();
}
}
}
答案 0 :(得分:2)
当尝试连接套接字时,你会说几件事:
所有这些都在 主机名解析为IP后发生。
所以问题的答案是否。如果Socket.Connect
失败,则可能是域名不存在,或上述任何原因(可能更多)。
答案 1 :(得分:0)