如何检查服务器是否在Android中关闭

时间:2013-10-15 05:17:29

标签: android

我想每3分钟向服务器发送一个字符串。我使用以下代码将数据从Android手机发送到服务器:

String stringDatatoSend="Hii server";
HttpEntity entity;
HttpClient client = new DefaultHttpClient();
String url ="http://some IP/android/insert.php";
HttpPost request = new HttpPost(url);
StringEntity se = new StringEntity(stringDatatoSend);
se.setContentEncoding("UTF-8");
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
entity = se;
request.setEntity(entity);
HttpResponse response = client.execute(request);
entity = response.getEntity();

但是如果服务器关闭,则数据会丢失,因为数据是发送的,无论是否有任何确认。我怎么检查是否 在发送数据之前服务器处于活动状态以避免数据丢失。我尝试了以下代码,但它总是返回false。

public boolean isConnectedToServer() {
    try {
        if(InetAddress.getByName("http://some IP/android/insert.php").isReachable(50000)) {
            return true;
        } else {
            return false;
        }
    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        return false;
    } catch (IOException e) {
        // TODO Auto-generated catch block
        return false;
    }
}

我也有这两个选项:

netAddress address = InetAddress.getByName(HOST_NAME);
boolean  reachable = address.isReachable(timeout);

并使用运行时:

Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("ping www.google.com");

主机名ip或地址应该是什么。

3 个答案:

答案 0 :(得分:0)

每3分钟后你需要检查网络连接是否可用,然后点击网址或者等待接下来的3分钟:

public  boolean checkInternetConnection() {

    ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    if (conMgr.getActiveNetworkInfo() != null
            && conMgr.getActiveNetworkInfo().isAvailable()
            && conMgr.getActiveNetworkInfo().isConnected()) {
        Log.d("Internet Connection  Present","");
        isFound=true;
    } else {
        Log.d("Internet Connection Not Present","");
        isFound= false;
    }
    return isFound;
}

答案 1 :(得分:0)

您需要每隔3分钟再次发送数据,实际上您无法控制服务器是否响应,或者设备的网络性能。但是您可以控制您对服务器的调用。如果您没有收到数据确认,则表示服务器尚未收到您的数据,您需要再次发送。只需检查从服务器接收数据的确认,然后发送/重新发送数据。

答案 2 :(得分:0)

用于检查服务器是否已关闭。您可以使用以下代码:

try {
        String response_string = null;
        HttpPost get = new HttpPost(SERVER_URL);
        HttpClient hc = new DefaultHttpClient();
        HttpResponse rp = hc.execute(get);
        response_string = new StringBuffer(EntityUtils.toString(rp.getEntity()));

        Log.d("Json Response  = ", "" + response_string);
        return response_string.toString();
    } catch (SocketException e) {
        e.printStackTrace();
    } catch (ConnectTimeoutException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }