android 心跳包,android socket 发送心跳包

本文介绍了一个Android Service实现的心跳包机制,通过Socket与服务器保持连接。当服务器断开时,客户端能够及时接收到通知并关闭Service。在代码中,详细展示了心跳包的发送、初始化Socket、读取服务器响应以及异常处理的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中,有如下需求:Android客户端向服务器发送数据,收到服务器返回的数据发送成功标识后,客户端即与服务器建立数据一来一往的心跳连接,若服务器端断开时,客户端接收到通知,关闭Service停止发送数据;代码如下:

public class BackService extends Service {

private static final String TAG = "BackService";

/** 心跳检测时间  */

private static final long HEART_BEAT_RATE = 3* 1000;

/** 主机IP地址  */

private static String HOST = "192.168.1.30";

/** 端口号  */

public static final int PORT =10801;

/** 消息广播  */

public static final String MESSAGE_ACTION = "org.feng.message_ACTION";

/** 心跳广播  */

public static final String HEART_BEAT_ACTION = "org.feng.heart_beat_ACTION";

private long sendTime = 0L;

private Socket socket;

private ReadThread mReadThread;

private InputStream is;//输入流

private int count;//读取的字节长度

private IBackService.Stub iBackService = new IBackService.Stub() {

@Override

public boolean sendMessage(String message) throws RemoteException {

return sendMsg(message);

}

};

@Override

public IBinder onBind(Intent arg0) {

return (IBinder) iBackService;

}

@Override

public void onCreate() {

super.onCreate();

HOST= (String) Utils.getShare(this, ConfigUrl.SERVER_IP,"ip");

Log.i(TAG,"ip-->"+HOST);

Log.i(TAG,"port-->"+PORT);

new InitSocketThread().start();

}

// 发送心跳包

private Handler mHandler = new Handler();

private Runnable heartBeatRunnable = new Runnable() {

@Override

public void run() {

ReadThr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值