gpt4 book ai didi

Java InetAddress.getByName.isReachable() 替代方案

转载 作者:行者123 更新时间:2023-12-01 14:15:02 24 4
gpt4 key购买 nike

我在我的应用程序中使用 InetAddress.getByName.isReachable() 一段时间,以便了解移动设备是否可以访问服务器。但是,这需要 Windows 7 中的权限,我想知道是否有替代方法可以执行此操作,而无需在 Windows 7 防火墙上添加权限。以下是我的使用方法:

boolean isReachable = false;
try{
isReachable = InetAddress.getByName("10.0.0.13").isReachable(1000);
} catch (Exception e){
Log.e("InetAddress", e.getMessage());
}finally {
if (isReachable) {
new CreateCandidato().execute();
}else{
Toast.makeText(getApplicationContext(), R.string.errorserver, Toast.LENGTH_LONG).show();
}
}

有更好的解决办法吗?谢谢

最佳答案

您的应用程序应该在发生ConnectException时尝试连接并处理它。这些让你尝试预见 future 并猜测会发生什么的游戏基本上都是浪费时间。发现任何资源是否可用的最佳方法是尝试使用它。在这种情况下:

  1. 服务器可能响应 ICMP,但根本不响应 TCP。
  2. 服务器可以响应 ICMP 或 TCP 端口 7,但服务仍无法运行。
  3. 服务器可以响应 ICMP 或 TCP 端口 7,并且该服务可能正在该实例上运行,但在您尝试连接时会立即关闭。
  4. 服务器无法响应 ICMP 或 TCP 端口 7,但服务器可能正在运行。

等等等等。不要试图预言 future 。

关于Java InetAddress.getByName.isReachable() 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18182088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com