首页 > 解决方案 > 此 Ping 功能的替代建议?

问题描述

在我的游戏应用程序中,我称之为:

Runtime.getRuntime().exec("/system/bin/ping -c 1 -w 1 $serverip")

它可以准确读取我的服务器的 ping,但在某些特殊情况下,ping 在某些情况下不会通过(例如,当玩家使用移动数据时,该命令在 25% 的情况下不返回任何内容没有明显的原因)。

我知道必须有其他 ping 命令/功能/方法/协议才能获得 ping 读数(我不确定游戏公司使用什么来在他们的游戏中获得持续的 ping 读数),有什么建议吗?提前致谢。

标签: android-studionetworkingpingconnectivity

解决方案


您还可以使用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());

推荐阅读