记录学习过程|

梨子Li

园龄:1年9个月粉丝:3关注:0

APUE-树莓派温度监控

一、项目介绍

树莓派上通过一线协议连接DS18B20,然后采用网络socket编程同时实现客户端和服务器端程序,其中客户端主要实现定时上报的功能,服务器端用来采集客户端上报的数据并存储到数据库中。

1、客户端介绍

  • 连接服务器的主机名和端口号可以通过命令行参数修改;
  • 客户端程序需要定时采样上报 一次数据,该时间也可以通过命令行参数来调整;
  • 客户端上报数据包含设备序列号、采样时间、采样温度值,并以字符串形式上报;
  • 如果网络socket异常(如网络断线、服务器端退出),在网络故障恢复后客户端程序能够自动重连;
  • 在网络故障出错期间,定时采样正常进行,在此瞬间所有采样的数据临时存储到SQLite数据库中;
  • 网络故障恢复之后,客户端程序自动将之前暂存到数据库中的数据上报销服务器上去, 并从里面删除。

2、服务器端介绍

  • 服务器端程序要能够通过命令行指定该程序监听的端口号;
  • 服务器端要采用多进程、多线程或多路复用等机制中的某一种实现多客户端并发上报;
  • 服务器端在接受到客户端上报的数据并解析成功之后,应该将数据永久存储到数据库中。

三、问题

1、断线重连如何实现:
使用getsocketopt() 可以确认连接状态
https://www.cnblogs.com/LiBlog--/p/18072747

2、使用makefile运行程序时找不到动态库:
makefile里每一个指令是一个独立的进程,export这一行是一个进程,export是临时改变环境变量,它结束了以后,对于下一行执行的这个进程来说,环境变量其实并没有改变。
https://www.cnblogs.com/LiBlog--/p/18072903

3、使用开源库sqlite3导致内存泄漏:
使用valgrind检查内存泄漏
https://www.cnblogs.com/LiBlog--/p/18127171

四、项目代码

https://github.com/SheaLiao/APUE_Project

本文作者:LiBlog--

本文链接:https://www.cnblogs.com/LiBlog--/p/18146703

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   梨子Li  阅读(27)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起