0

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

これらの2つのオプションもあります:

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

そしてランタイムを使用して:

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

ホスト名の IP またはアドレスは何であるべきか。

4

3 に答える 3

0

3分ごとにデータを再送信する必要があります.サーバーが応答しているかどうか、またはデバイスのネットワークパフォーマンスを実際に制御することはできません. ただし、サーバーに対して行っている呼び出しを制御できます。データ確認応答が得られない場合は、データがまだサーバーに受信されていないことを意味し、再度送信する必要があります。サーバーから受信したデータの受信確認を確認してから、データを送信/再送信します。

于 2013-10-15T05:36:20.230 に答える
0

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;
}
于 2013-10-15T05:24:38.780 に答える
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();
    }
于 2013-10-15T06:35:04.653 に答える