TCP_SERVER服务端,监听物联网设备发送的TCP数据包,将TCP数据包编解码后通过HTTP发送到BACK端进行数据存储更新。
Smart-Socket + SpringBoot + Http客户端
-
Air-Room:基于Air-Protocol按照协议编码,模拟生成大气监测数据,通过线程池Socket模拟发送TCP数据包到TCP_SERVER。
-
Air-Iot:基于Air-Protocol按照协议编码,通过物联网设备采集数据,通过WIFI模块发送TCP数据包到TCP_SERVER,解码数据包并将数据通过HTTP发送到BACK服务器。
通过心跳机制监测传感器状态,若失联三分钟,则关闭死连接,收到心跳包时再连接
PROTOCOL协议编解码工具详见:[https://github.com/kevinten10/Air-Protocol]
BACK数据存储服务详见: [https://github.com/kevinten10/Air-Server]
WEB数据展示网站详见:[https://github.com/kevinten10/Air-Webapp]
需导入Protocol协议编解码jar包 Air-Protocol
Air-Protocol.jar已经放在了项目目录下,需要将其手动导入到项目libraries
File -> Project Structure -> Libraries -> add -> java -> 选择jar包
# 1. 下载项目到本地
# git clone https://github.com/kevinten10/Air-Server.git
# 2. 打开项目(推荐使用IDEA)
# 3. 启动项目
# 4. 可使用tools目录下TCP测试工具进行测试
- 打包成JAR
File -> Project Structure -> Artifacts -> Add -> JAR -> from modules with dependencies
配置“Directory for META-INF/MAINFEST.MF”,此项配置的缺省值是:..Project\src\main\java,需要改成:..Project(项目目录)
选择“Build - Build Artifacts”下的“Build”或者“Rebuild”即可生成最终的可运行的jar,在..\Project\out\artifacts\Project_jar下面找到生成的目标jar,(JAR名与项目名相同的一项)
- 配置JAR
打开JAR,找到META-INF/MAINFEST.MF文件,检查 "Main-Class" 配置是否正确
正确配置为 Main-Clas: com...(包名)...AirServerApplication(main函数类)
- 上传JAR
通过winscp工具上传jar所在文件到服务器中
运行
java -jar project.jar (即运行主JAR包)
检查是否启动成功
- 开启防火墙
放通9001监听端口,9003调用端口
已将打包好的jar包放在目录下,将Air_Server_jar拷贝到服务器文件下即可,进入目录,输入
java -jar Air-Server.jar
即可运行服务
后台运行:nohup java -jar Air-Server.jar > /usr/local/air/server.out &
docker run -d --network host -v /usr/local/air/Air_Server_jar/Air-Server.jar:/usr/local/air/Air_Server_jar/Air-Server.jar --name air-back java:8u111 java -jar /usr/local/air/Air_Server_jar/Air-Server.jar
解析
--network host :本身与宿主机共用了网络,容器中暴露端口等同于宿主机暴露端口。
-d 表示在后台启动
-v /usr/local/air/Air_Server_jar/Air-Server.jar:/usr/local/air/Air_Server_jar/Air-Server.jar 表示将宿主主机的jar文件,映射到容器中(分号前为宿主主机的路径,分号后为容器中的路径)
--name air-back 表示为该容器取一个全局唯一的名称,这里我取的名称为air-back
java:8u111 表示镜像文件的名称和tag
java -jar /usr/local/air/Air_Server_jar/Air-Server.jar 表示运行jar包,注意:这里的jar包为容器中的位置,是通过前面的-v属性映射的