如何检查指定端口是否可用于通信?

时间:2013-11-18 07:10:32

标签: java networking

我使用Java安全通道连接网络中的主机。 我使用以下代码:

int port = 22;JSch jsch = new JSch();
try {
session=jsch.getSession(username,hostname,port);
}
catch (JSch Exception e1){
e1.printStackTrace();
}
session.setPassword("mypassword");
try {
session.connect();
}catch (JSchException e1){
System.out.println("Did not connect");
return;
}

通过使用此代码,我可以连接到主机。 但是如果主机不可用/离线,那么我必须等待JSchException。

1)我想首先检查主机是否可用于通信,如果可用,则只尝试连接。

2)另外我想为连接设置超时,如果在该时间间隔内没有建立连接则必须给出异常。

如何检查主机是否可用?并设置连接超时?

2 个答案:

答案 0 :(得分:1)

连接之前的测试没有什么大意义,因为端口在测试后可能变得不可用。尝试使用session.setTimeout()以毫秒为单位设置超时。

答案 1 :(得分:0)

  

如何检查指定端口是否可用于通信?

如何检查指定的 X 是否可用于 Y:

尝试使用 Y。这是一项绝对可靠的测试。任何其他技术都有时间窗问题。