在某个大楼里,安装了一个实时监控的设备。但是由于这栋大楼目前还处于全面施工的状态,因此这个监控设备,不停的被施工方掐点,断网等等,状况百出,也是令人防不胜防。。于是,一直在想,有没一个很简单的方法,看获知目前这个监控设备的状态。方法倒是有,例如利用各种云平台的推送服务,但是感觉都不像是1,2天搞完的,毕竟俺不是做后台开发的人。。于是用google不停的搜索,终于发现了一个软件,叫做Bark的软件,暂时只支持IOS和电脑端。但是客户端和服务器都全部开源,因此要移植到Android上,也不会太难。具体的介绍,请看下面的链接:

https://www.appinn.com/bark-for-iphone/

客户端代码:https://github.com/Finb/Bark

服务器端代码:https://github.com/Finb/bark-server

看上去针对非常方便。于是就先拿过来测试一下看看呗。

1. 手机端安装,直接app store上下载bark,安装后,点击注册设备,弹出自己的http链接地址,如下图所示

2.在linux上实现https的post。我原以为必须要实现https,但是在浏览器里用http测试了一下,也是可以的,于是这一下子简单了。直接用C+socket实现一把得了。

参考https://blog.csdn.net/u013377887/article/details/62429457 资料,由于该post只需要url,不需要内容,因此稍微修改了下post的内容。代码如下所示:

#include <netdb.h>
#include <sys/socket.h>void process_info(int fd)
{int send_num;char send_buf [] = "helloworld";char recv_buf [4096];char str1[4096];while (1){printf("begin send\n");memset(str1,0,4096);strcat(str1, "POST http://api.day.app/xxxxxxxxxx/今天带饭了吗? HTTP/1.1\r\n");strcat(str1,"Host: api.day.app\r\n");strcat(str1,"Content-Length: 0\r\n");strcat(str1,"\r\n\r\n");printf("str1 = %s\n",str1);send_num = send(fd, str1,strlen(str1),0);if (send_num < 0){perror("send error");return;}else{printf("send successful\n");printf("begin recv:\n");int recv_num = recv(fd,recv_buf,sizeof(recv_buf),0);if(recv_num < 0){perror("recv");return;} else {printf("recv sucess:%s\n",recv_buf);}}break;sleep(5);}
}void main(void)
{int sock_fd;struct sockaddr_in addr_serv;struct hostent* hostInfo;sock_fd=socket(AF_INET, SOCK_STREAM, 0);if (sock_fd < 0){perror("sock error");return;}else{printf("sock successful");      }hostInfo = gethostbyname("api.day.app");if(NULL == hostInfo){printf("hostInfo is null\n");return;}memset(&addr_serv, 0, sizeof(addr_serv));addr_serv.sin_family = AF_INET;addr_serv.sin_port = htons(80);printf("Ip address = %s \n",inet_ntoa(*((struct in_addr*)hostInfo->h_addr)));memcpy(&addr_serv.sin_addr, &(*hostInfo->h_addr_list[0]), hostInfo->h_length);if (connect(sock_fd, (struct sockaddr*)(&addr_serv), sizeof(addr_serv)) < 0){perror("connect error\n");return;}else{printf("connect successful\n");}process_info(sock_fd);
}

编译,下载,运行结果如下:

root@debian:~/workspace/modbus# ./main
sock successfulIp address = 35.194.255.247
connect successful
begin send
str1 = POST http://api.day.app/xxxxx/今天带饭了å—? HTTP/1.1
Host: api.day.app
Content-Length: 0send successful
begin recv:
recv sucess:HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Tue, 30 Jul 2019 03:42:50 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 37
Connection: keep-alive{"code":200,"data":null,"message":""}qò¶üPè‘c¤¾

里面的乱码,应该是中文字符造成的。由于临近12点,我就推送了一个“今天带饭了吗”。。发送完毕后,只听见叮的一声,手机上已经收到了推送的信息。

到此,就差不多结束了。只不过目前还没有Android的安装包。。希望哪位大神赶快弄一个。。

针对这个监控设备,如果隔个30分钟收不到推送信息,那就证明这台监控设备出问题了。

最简单的推送提醒服务-Bark相关推荐

  1. Bark – 给自己的 iPhone 发推送提醒,简单开源且免费

    Bark 是一款纯推送提醒服务,主要用来给自己的 iPhone 发送自定义内容的推送,可以是文字.链接,不提供历史记录功能,阅后即焚. 一.bark的应用场景 笔者最近有个需求,比如偶尔的快递箱取件码 ...

  2. 苹果推送消息服务(转)

    苹果推送消息服务 .NET 开源项目:https://github.com/Redth/APNS-Sharp Push的原理: Push 的工作机制可以简单的概括为下图 图中,Provider是指某个 ...

  3. android自定义push通知_20个海外Web和App推送通知服务工具

    在App和网站中使用推送通知有不同的原因,并且在提高流量和与客户互动方面有很多好处.推送通知是一种交互式可点击消息,可将访问者直接引导至你的网站.它们可以帮助你以指数方式增加流量和参与率.因此,营销人 ...

  4. rtsp实时流通过rtmp推送到服务端

    rtsp实时流通过rtmp推送到服务端 很多朋友都会问到rtsp如何通过rtmp协议推送到服务端,正好前段时间开发了这个功能写在这里,和大家分享下. 首先我想说的是:ffmpeg可以实现这个功能.ff ...

  5. 苹果推送通知服务(APNs)编程(转)详细步骤

    iPhone 对于应用程序在后台运行有诸多限制(除非你越狱).因此,当用户切换到其他程序后,原先的程序无法保持运行状态.对于那些需要保持持续连接状态的应用程序(比如社区网络应用),将不能收到实时的信息 ...

  6. 当RPA流程自动控制机器人遇到了GitHub Actions和Wxpusher,实现自动推送一体化服务

    当RPA流程自动控制机器人遇到了GitHub Actions和Wxpusher,实现自动推送一体化服务 流程分析 过程实现 第一步:python爬虫获取研招网最新动态 第二步:WxPusher实现消息 ...

  7. go gorilla_使用gorilla websocket构建浏览器推送通知服务的低级设计

    go gorilla Singhania AdityaSinghania Aditya Follow跟随 Aug 31 8月31 gopher leaving everyone awestruck w ...

  8. 20个海外Web和App推送通知服务工具(一)

    在App和网站中使用推送通知有不同的原因,并且在提高流量和与客户互动方面有很多好处.推送通知是一种交互式可点击消息,可将访问者直接引导至你的网站.它们可以帮助你以指数方式增加流量和参与率.因此,营销人 ...

  9. 手把手教你开发安卓推送通知服务(使用阿里云 emas)

    0 前言 0.1 痛点:安卓推送通知无统一标准 安卓是开源的手机操作系统,各大手机硬件厂商都会在它的基础上定制自己的操作系统. 在中国,用户因为各种原因无法使用 Google 官方服务框架,所以,在中 ...

最新文章

  1. 认清自己,愉快度过每一天
  2. PyTorch 系列教程之空间变换器网络
  3. setcellvalue 格式_POI对EXCEL的操作【重点:如何设置CELL格式为文本格式】
  4. Spring核心注释
  5. 提升用户体验,你不得不知道的事儿——三种提醒框的微技巧
  6. docker公共存储库_Docker Hub公共镜像仓库的使用
  7. 连接Oracle时ORA-12541 TNS 无监听程序
  8. 【软件工具使用】高效使用 Visio 绘图
  9. UCOII信号量与消息邮箱
  10. macOS Catalina10.15.4安装HP Laser Jet1020打印机驱动方法
  11. 计算机系统结构模拟试卷3,计算机系统结构全真模拟试卷.pdf
  12. navicat下载安装教程
  13. shader 重建世界坐标
  14. excel二维表转化为一维表
  15. bellman operator 和bellman equation概念区分
  16. 租用gpu训练神经网络(矩池云)
  17. Rust之包,箱和模块管理(四):用use关键字引用其他包
  18. KEIL,MDK,STM32
  19. C语言实现自动出题、单词拼写等功能,附带管理员模式
  20. STM32F411的HSI和HSE启动方式切换及仿真

热门文章

  1. 高斯判别分析(GDA)公式推导
  2. 辰视智能董事长冯良炳博士接受起点机器人网专访!
  3. 最好玩的计算机游戏排行,10款好玩的电脑单机游戏 好玩的单机游戏排行
  4. 用于图像语义分割的GAU与PPM
  5. oracle 使用trigger实现主键自增
  6. 义乌义川机器人_义乌毛氏发源地——尚阳
  7. eclipse building workspace sleeping rapidly
  8. 5. IO流之缓冲流
  9. 港科资讯 | 香港科技大学与Microsoft香港签订AI商学院2.0合作备忘录
  10. 运动蓝牙耳机品牌推荐:2022年六大运动耳机推荐