我想测试是否可以使用Java访问远程系统,或者换句话说使用Java"发送ping".例如,此功能应封装在具有布尔值的方法中
public boolean isReachable(String ip) {
// what to do :-)
}
Run Code Online (Sandbox Code Playgroud)
我已经测试了Java Process类,但我不认为这是最好的方法,因为OutputBuffers的输出处理很复杂.
Process proc = Runtime.getRuntime().exec("ping " + ip);
Run Code Online (Sandbox Code Playgroud)
另一种可能性是创建一个套接字连接并处理抛出的异常,但如果远程系统是一个"裸"的unix系统,另一边可能没有Socket :-)另外,我希望能够设置一个超时时,无法访问远程系统.
那怎么能这样呢?谢谢!
and*_*ndy 44
InetAddress.getByName(ip).isReachable(timeout);
Run Code Online (Sandbox Code Playgroud)
看起来您使用的是 Linux,因此您可能会发现isReachable()不可靠(因为您没有发送 ICMP 数据包的权限,并且很少有服务器运行 Echo 服务)。
如果是这样的话,那么我想你会需要产卵在你建议的方式过程中使用,但我建议使用像这样的命令:
ping -c 1 hostname
Run Code Online (Sandbox Code Playgroud)
这将在一次尝试后终止,然后您可以检查进程的退出状态 - 比解析标准输出更可靠。
Ping 在失败时返回 0 表示成功非零。
| 归档时间: |
|
| 查看次数: |
29070 次 |
| 最近记录: |