我想每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或地址应该是什么。
答案 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();
}