【发布时间】:2015-06-30 04:47:09
【问题描述】:
我的问题是:我需要发现一个 IP 和端口是否正在运行 SMTP 服务。 为此,我使用 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;
}
它工作正常,我得到了预期的结果,但超时一直是我的问题。 例如:如果我尝试 ip: 127.0.0.1 和端口 80(IIS 开放端口),则连接步骤需要很长时间(远远超过超时中定义的时间)才能引发异常
java.net.SocketException:连接重置
如何为这种情况设置 timeOut?或者存在另一种方法来做我的简单测试?
【问题讨论】:
标签: java smtp apache-commons