java 定时发送心跳_RxJava2.0第五篇 interval 定时任务(心跳包)

RxJava2.0第五篇 interval 定时任务(心跳包)

发布时间:2018-09-23 00:05,

浏览次数:1133

, 标签:

RxJava

interval

interval  :返回一个流,每个指定的时间间隔都发射一个序号。

可以使用在例如股票k线图、实时数据等应用环境

首先来看一下原方法:

public static Flowable interval(long period, TimeUnit unit) { return

interval(period, period, unit, Schedulers.computation()); }

从上面的方法中我们看出,interval在Flowable.java

类中很多重载方法,我们可以根据不同的需求调用不同的方法即可,以下是对interval的常用方法:

一、定时调用

//定时2秒调用一次 Flowable.interval(2,

TimeUnit.SECONDS).observeOn(AndroidSchedulers.mainThread()) .subscribe(new

Consumer() { @Override public void accept(@NonNull Long aLong) throws

Exception { Log.e("------>",(aLong++)+""); } }); 输出日志: 09-22 03:13:36.785

4434-4434/jy.com.rxjava2 E/------>: 0 09-22 03:13:38.785

4434-4434/jy.com.rxjava2 E/------>: 1 09-22 03:13:40.785

4434-4434/jy.com.rxjava2 E/------>: 2 09-22 03:13:42.785

4434-4434/jy.com.rxjava2 E/------>: 3 09-22 03:13:44.785

4434-4434/jy.com.rxjava2 E/------>: 4 09-22 03:13:46.785

4434-4434/jy.com.rxjava2 E/------>: 5 09-22 03:13:48.785

4434-4434/jy.com.rxjava2 E/------>: 6 二、带有延迟 的定时任务;如下,先 延迟 10秒 ,在执行2s定时任务

public static void interval2(final TextView textView) { Log.e("======>",

"start"); Flowable.interval(10, 2, TimeUnit.SECONDS)

.observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer() {

@Override public void accept(@NonNull Long aLong) throws Exception {

Log.e("======>",(aLong++)+""); } }); } 输出日志: 09-22 05:00:32.965

11640-11640/jy.com.rxjava2 E/======>: start 09-22 05:00:43.015

11640-11640/jy.com.rxjava2 E/======>: 0 09-22 05:00:45.015

11640-11640/jy.com.rxjava2 E/======>: 1 09-22 05:00:47.015

11640-11640/jy.com.rxjava2 E/======>: 2 09-22 05:00:49.015

11640-11640/jy.com.rxjava2 E/======>: 3 09-22 05:00:51.015

11640-11640/jy.com.rxjava2 E/======>: 4 09-22 05:00:53.015

11640-11640/jy.com.rxjava2 E/======>: 5 09-22 05:00:55.015

11640-11640/jy.com.rxjava2 E/======>: 6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的 C++ 代码示例,用于定时发送心跳包: ```cpp #include <iostream> #include <sys/socket.h> #include <arpa/inet.h> #include <unistd.h> #include <cstring> #include <cstdlib> #include <cstdio> #include <ctime> using namespace std; #define SERVER_IP "192.168.1.1" // 服务器的 IP 地址 #define SERVER_PORT 8888 // 服务器的端口号 #define HEARTBEAT_INTERVAL 10 // 心跳包发送间隔,单位为秒 int main() { // 创建 socket int sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock < 0) { perror("socket"); exit(1); } // 设置服务器地址 struct sockaddr_in server_addr; memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(SERVER_PORT); server_addr.sin_addr.s_addr = inet_addr(SERVER_IP); // 定时发送心跳包 while (true) { // 构建心跳包数据 time_t now = time(NULL); char data[1024]; sprintf(data, "Heartbeat at %s", ctime(&now)); // 发送心跳包 int ret = sendto(sock, data, strlen(data), 0, (struct sockaddr *)&server_addr, sizeof(server_addr)); if (ret < 0) { perror("sendto"); break; } // 等待一段时间后再次发送心跳包 sleep(HEARTBEAT_INTERVAL); } // 关闭 socket close(sock); return 0; } ``` 在上面的代码中,我们使用 `socket` 函数创建了一个 UDP socket,并设置了服务器的 IP 地址和端口号。然后我们使用一个 while 循环,定时发送心跳包。在每次循环中,我们构建心跳包数据并使用 `sendto` 函数发送。最后,我们等待一段时间后再次发送心跳包,这里使用 `sleep` 函数实现。在发送过程中,如果出现错误,我们会输出错误信息并退出循环。最后,我们使用 `close` 函数关闭 socket。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值