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

Java 如何检查指定端口是否可用于通信?,java,networking,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 (JS

我正在使用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;
}
通过使用此代码,我可以连接到主机。 但如果主机不可用/脱机,则必须等待JSCHEException

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

2) 我还想为连接设置超时,若在该时间间隔内未建立连接,则必须给出异常


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

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

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

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

试着用它来测试Y,这是一个绝对正确的测试。任何其他技术都有计时窗口问题