为什么Android上socket客户端往服务端发送数据总要多发几次服务器才能收到?

为什么Android上socket客户端往服务端发送数据总要多发几次服务器才能收到?,第1张

socket有两种连接方式:TCP与UDP,各有特点,

不知你用了哪种,TCP传输可靠,UDP不可靠会丢失包,

但UDP包有原路返回的特点,特别适合QQ这种的即时聊天工具。

你用TCP试试,不会丢失包的。

JSONArray jsonArray = new JSONArray(string); //string为返回的字符串

//数据直接为一个数组形式,所以可以直接 用android提供的框架JSONArray读取JSON数据,转换成Array

for (int i = 0; i < jsonArraylength(); i++) {

JSONObject item = jsonArraygetJSONObject(i);

//每条记录又由几个Object对象组成

iitemgetInt("index");

// 获取对象对应的值

itemgetString("address");

}

1 从Service继承一个类。

2 创建startService()方法

3 创建endService()方法 重载onCreate方法和onDestroy方法,并在这两个方法里面来调用startService以及endService。

4 在startService中,通过getSystemService方法获取ContextLOCATION_SERVICE。

5 基于LocationListener实现一个新类。默认将重载四个方法onLocationChanged、onProviderDisabled、onProviderEnabled、onStatusChanged。对于onLocationChanged方法是我们更新最新的GPS数据的方法。一般我们的操作都只需要在这里进行处理。

6 调用LocationManager的requestLocationUpdates方法,来定期触发获取GPS数据即可。在onLocationChanged函数里面可以实现我们对得到的经纬度的最终操作。

7 最后在我们的Activity里面通过按钮来启动Service,停止Service。

示意代码如下:

package comoffbyegpsservice;

import androidappService;

import androidcontentContext;

import androidcontentIntent;

import androidlocationLocationListener;

import androidlocationLocationManager;

import androidosBinder;

import androidosIBinder;

import androidutilLog;

public class GPSService extends Service {

// 2000ms

private static final long minTime = 2000;

// 最小变更距离10m

private static final float minDistance = 10;

String tag = thistoString();

private LocationManager locationManager;

private LocationListener locationListener;

private final IBinder mBinder = new GPSServiceBinder();

public void startService() {

locationManager = (LocationManager) getSystemService(ContextLOCATION_SERVICE);

locationListener = new GPSServiceListener();

locationManagerrequestLocationUpdates(LocationManagerGPS_PROVIDER, minTime, minDistance,

locationListener);

}

public void endService() {

if (locationManager != null && locationListener != null) {

locationManagerremoveUpdates(locationListener);

}

}

@Override

public IBinder onBind(Intent arg0) {

// TODO Auto-generated method stub

return mBinder;

}

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 为什么Android上socket客户端往服务端发送数据总要多发几次服务器才能收到?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情