Моя проблема: мне нужно открыть, если один IP и порт работает с SMTP-службой. Для этого я использую SMTPClient, чтобы попробовать открыть соединение. Я использую код ниже.SMTPClient устанавливает тайм-аут для открытого порта
private static boolean validateSMTP(String ip, int port, int timeOut) {
SMTPClient smtp = new SMTPClient();
try {
smtp.setConnectTimeout(timeOut);
smtp.connect(ip, port);
return true;
} catch (SocketException e) {
LogAplication.Warning("Ops... something wrong", e);
} catch (IOException e) {
LogAplication.Warning("Ops... something wrong", e);
}
finally{
smtp = null;
}
return false;
}
Это нормально работает, и я получил ожидаемые результаты, но timeOut был моей проблемой. Например: Если я пытаюсь IP: 127.0.0.1 и порт 80 (IIS открытый порт) Подключать шаг занимает много (гораздо больше, чем определено в тайм-аута), чтобы сгенерировать исключение
java.net.SocketException: Восстановление соединения
Как установить время для этого случая? Или существует другой способ сделать мой простой тест?
'smtp.setDefaultTimeout (timeOut); smtp.setConnectTimeout (timeOut); ' Оба эти строки должны быть в коде? –
setConnectTimeout: устанавливает время ожидания соединения в миллисекундах, которое будет передано методу connect() объекта Socket. setDefaultTimeout: устанавливает тайм-аут по умолчанию в миллисекундах для использования при открытии сокета. –