Итак, у меня есть очень простой скрипт:
#region Get Hostname IP
IPAddress[] dnsRecords = Dns.GetHostAddresses(hostname);
string ipHostname = dnsRecords[0].ToString();
if (ipHostname.Length == 0) {
responseCode = imapLoginResponse.Failed;
return false;
}
#endregion
#region Try make a request to the Host, Port
try {
_Connection = new TcpClient(ipHostname, port);
} catch (SocketException ex) {
System.Diagnostics.Debug.Write("-" + hostname + "-" + ipHostname + "- " + ex.Message);
responseCode = ex.Message == "No such host is known" || ex.Message.StartsWith("No connection could be made because the target machine actively refused it") ? imapLoginResponse.BadHostname : imapLoginResponse.Failed;
return false;
}
Приведенный выше код просто пытается подключиться к серверу IMAP.
- Get imap. {Domain.ext} DNSIP-адрес записи
- Попробуйте подключиться к этому IP-адресу с портом 993
- Вуаля
Что происходит с веб-сайтами: битые / плохие / заброшенные / припаркованные:
- Get imap. {Domain.ext} DNS-запись IP, каким-то образом получит один, даже если он не существует
- Попробуйте подключиться к этому IP с портом 993
- Серверне отвечает, что приводит к тайм-ауту
Что мне теперь делать?Я не могу отменить это до «BadHostname», так как это может быть просто проблема с подключением на стороне пользователя или даже без подключения к Интернету.
Если бы я просто повторил здесь, это закончилось бы бесконечным циклом.Хотя да, я мог бы сделать 5 попыток == неверная вещь, но это не совсем точно и все равно может быть временной проблемой с Интернетом.
Мой вопрос: почему он получает IP-адрес DNS-записи для записи, которая несуществовать?И что я должен делать, когда происходит что-то подобное?
Если вам нужно протестировать, попробуйте это с помощью: imap.celerityinc.com (без celebrityinc.com), и вы сможете убедиться сами.