【问题标题】:Alternative suggestions for this Ping function?此 Ping 功能的替代建议?
【发布时间】:2021-07-02 15:09:24
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您的服务器可以公开一个 /ping 端点,您的游戏可以使用 http 调用该端点。

标签: android-studio networking ping connectivity


【解决方案1】:

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

【讨论】:

  • 直到现在我才知道“ping”方法!非常感谢!
猜你喜欢
  • 2018-12-03
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 2012-05-07
  • 2021-06-16
  • 1970-01-01
相关资源
最近更新 更多