如何测试打开的连接是否正常工作?

How test if an open connection is working?

我们正在为连接到内部 wifi 的移动设备开发一些内部应用程序。我们遇到了一些问题,因为我们只检查设备是否使用 ConnectivityManager 连接。但是我们不仅需要检查是否有连接,还需要检查设备和服务器之间的连接是否正常。

问题是 ConnectivityManager 告诉我们 wifi 已连接。但是,如果设备位于覆盖范围小的区域,应用程序在尝试连接时会出错。

我们如何轻松地检查我们针对服务器打开的连接是否仍在正确响应?例如,连接针对 SQL 服务器打开的应用程序之一。有什么方法可以检查我们是否到达了服务器并且它给了我们一个 ok,并且我们没有因为覆盖率低而丢失连接和包?

谢谢!!

如果收到 NullPointerExceptionIOException 很可能没有连接或连接超时,您可以尝试对服务器执行 ping 操作。 你可以在这里阅读更多 an answer to similar question by syb0rg。还请记住将这段代码包装在 AsyncTaskThread 中以防止您的应用程序崩溃。

try {
    //replace URL with your domain
    URL url = new URL("http://www.google.com");
    HttpURLConnection urlConnect = (HttpURLConnection) url.openConnection();
    urlConnect.setConnectTimeout(1000);
    urlConnect.getContent();
    System.out.println("Connection established.");
} catch (NullPointerException np) {
    np.printStackTrace();
} catch (IOException io) {
    io.printStackTrace();
}