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

如何在android中检查服务器是否关闭,android,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 s

我想每隔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分钟后,您需要检查互联网连接(如果可用) 然后点击url,否则等待3分钟:


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

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

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();
    }

这将检查我手机的互联网连接。我想检查服务器状态。如果我的移动互联网工作正常,但服务器关闭了怎么办。在这种情况下,数据丢失OK,然后您需要编写一个服务器端sript。它将向您提供服务器是否已关闭的确认。如果你得到了回复,那么你可以启动url,否则等待,这意味着如果我从服务器得到回复,那么它就启动了。否则它就要倒下了。仪式但是,有没有办法从手机上检查服务器状态?据我所知,我们需要服务器的确认,但不要启动响应沉重的url,我的意思是只需从服务器返回响应代码,该代码必须标识状态您收到我的声明了吗?我正在使用移动互联网向服务器发送数据。但是,如果服务器由于某些原因而停机,数据包将丢失。chekc这是我提到的使用同一行代码的。InetAddress.getByName(“IP/android/insert.php”).isReachable(50000);我是否以错误的方式使用它。请尝试捕获SocketException和ConnectTimeoutException。这将在您的internet正常但服务器关闭时抛出。@Arshad Parwez让我试试这个。
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();
    }