java - 如何检查指定端口是否可以通信?

标签 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)我还想设置连接超时,如果在该时间间隔内没有建立连接则必须给出异常。

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

最佳答案

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

关于java - 如何检查指定端口是否可以通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20042055/

相关文章:

java - 允许按值快速查找键的 Java multimap

java - 测试 PBEKeySpec junit

python - 为什么要创建不同的 HOST 和 PORT 变量,然后使用它们来创建 ADDR 变量?

ios - iOS 上的 flutter : How to trigger pop-up for allowing local network access

java - 使用 JNDI 将任何数据(条目)添加到 LDAP 服务器

java - 使用 Thrift 运行 Hive Hook 时出现 YARN AM 容器错误

linux - 如何使用 JMeter 在 Linux (Ubuntu) 上执行 IP 地址欺骗? (JMeter 未创建绑定(bind) IP)

linux - Docker - 如何编写自定义负载均衡器?

python - Tornado Python 阻塞 _socket.getaddrinfo

java - 打印出一个数组列表