android-studio - 此 Ping 功能的替代建议?
问题描述
在我的游戏应用程序中,我称之为:
Runtime.getRuntime().exec("/system/bin/ping -c 1 -w 1 $serverip")
它可以准确读取我的服务器的 ping,但在某些特殊情况下,ping 在某些情况下不会通过(例如,当玩家使用移动数据时,该命令在 25% 的情况下不返回任何内容没有明显的原因)。
我知道必须有其他 ping 命令/功能/方法/协议才能获得 ping 读数(我不确定游戏公司使用什么来在他们的游戏中获得持续的 ping 读数),有什么建议吗?提前致谢。
解决方案
您还可以使用java.net包中提供的Socket类。使用提供的方法connect(SocketAddress endpoint)您可以将您的套接字连接到服务器。
例如,您可以使用类似这样的东西
public static boolean ping(String address, int port) {
Socket socket = new Socket();
try {
socket.connect(new InetSocketAddress(address, port));
} catch (IOException e) {
return false;
} finally {
try {
socket.close();
} catch (IOException ignored) { }
}
return true;
}
你可以像这样调用ping("www.google.com", 443)
最后,您可以使用java.net.URL类来包装您的 String url。例如,
URL url = new URL("https://www.google.com:443/");
ping(url.getHost(), url.getPort());
推荐阅读
- javascript - 获取未定义表格单元格javascript子项的值
- jhipster - jhipster项目时出现elasticsearch错误
- ruby - 如何使用 Ruby 比较两个 XML 文件并以 html 格式显示差异
- php - Laravel:碳缩短 diffForHumans()
- javascript - html 页面作为小部件
- reactjs - 反应:如果未保存数据,如何取消 componentWillUnmount() 方法
- css - CSS Not Selector 不选择单个页面
- mysql - 更新日期+2 mysql
- dart - 如何检测抽屉是否关闭?
- python - 从仪器读取时出现访问冲突