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 またはアドレスは何であるべきか。