blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyUdpServer/controller/AnimalHeatController.java
New file @@ -0,0 +1,20 @@ package org.springblade.jfpt.nettyUdpServer.controller; import lombok.AllArgsConstructor; import org.springblade.jfpt.nettyUdpServer.service.AnimalHeatService; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 体温监测控制层 * @time 2021-2-25 */ @RestController @RequestMapping("animalHeat/animalHeat") @AllArgsConstructor public class AnimalHeatController { private final AnimalHeatService animalHeatService; } blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyUdpServer/entity/BladeAnimalHeat.java
New file @@ -0,0 +1,39 @@ package org.springblade.jfpt.nettyUdpServer.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * @title 体温数据表 * @author arsn * @time 2021-2-25 */ @Data @TableName("blade_animal_heat") public class BladeAnimalHeat implements Serializable { private static final long serialVersionUID = 4356978043337357357L; @TableId(value = "id", type = IdType.AUTO) private Integer id;// bigint(20) NOT NULL COMMENT '主键', private Integer method;// int(1) NOT NULL COMMENT '方法名: 0 表示 infrared_aiom_picture 图片数据, 1 表示 engine_echo 心跳包 ', private String ip;// varchar(63) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '设备IP地址', private String picture;// varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '图片url路径', @TableField("picture_red") private String pictureRed;// varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '红外图片url路径', @TableField("temp_red") private Float tempRed;// float(4,2) DEFAULT NULL COMMENT '当前人员的温度', @TableField("person_rect") private String personRect;// varchar(63) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '人脸位置二位数组,[left,top,right,bottom]', @TableField("person_rect_red") private String personRectRed;// varchar(63) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '红外人脸位置二位数组,[left,top,right,bottom]', @TableField("create_time") private Date createTime;// datetime DEFAULT NULL COMMENT '创建时间', } blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyUdpServer/handle/UdpServerHandler.java
@@ -1,7 +1,6 @@ package org.springblade.jfpt.nettyUdpServer.handle; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.channel.socket.DatagramPacket; @@ -11,7 +10,7 @@ import org.springframework.stereotype.Component; /** * Created by wangshikai on 2016/7/18. * updHandler udp 服务端数据接收处理 */ @Component public class UdpServerHandler extends SimpleChannelInboundHandler<DatagramPacket> { blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyUdpServer/mapper/AnimalHeatMapper.java
New file @@ -0,0 +1,11 @@ package org.springblade.jfpt.nettyUdpServer.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.springblade.jfpt.nettyUdpServer.entity.BladeAnimalHeat; /** * mapper 映射层 * */ public interface AnimalHeatMapper extends BaseMapper<BladeAnimalHeat> { } blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyUdpServer/server/UdpServer.java
@@ -17,7 +17,7 @@ import java.util.concurrent.Executors; /** * Created by wangshikai on 2016/7/18. * updServer udp服务端 */ public class UdpServer { private static Logger LOG = LoggerFactory.getLogger(UdpServer.class); @@ -73,51 +73,57 @@ //使用ChannelPipeline实现自定义IO //Channel channel; public void run() { //InetSocketAddress socketAddress = new InetSocketAddress("s16s652780.51mypc.cn", 21403); //启动服务 EventLoopGroup workerGroup = new NioEventLoopGroup(); //优化使用的线程 final EventExecutorGroup group = new DefaultEventExecutorGroup(16); Thread thread = new Thread(new Runnable() { @Override public void run() { //InetSocketAddress socketAddress = new InetSocketAddress("s16s652780.51mypc.cn", 21403); //启动服务 EventLoopGroup workerGroup = new NioEventLoopGroup(); //优化使用的线程 final EventExecutorGroup group = new DefaultEventExecutorGroup(16); try { Bootstrap b = new Bootstrap();//udp不能使用ServerBootstrap b.group(workerGroup).channel(NioDatagramChannel.class)//设置UDP通道 //设置udp的管道工厂 .handler(new ChannelInitializer<NioDatagramChannel>() { //NioDatagramChannel标志着是UDP格式的 @Override protected void initChannel(NioDatagramChannel ch) throws Exception { // TODO Auto-generated method stub //创建一个执行Handler的容器 ChannelPipeline pipeline = ch.pipeline(); pipeline.addLast(new StringDecoder()); pipeline.addLast(new StringEncoder()); //执行具体的处理器 pipeline.addLast(group, "handler", new UdpServerHandler());//消息处理器 } try { Bootstrap b = new Bootstrap();//udp不能使用ServerBootstrap b.group(workerGroup).channel(NioDatagramChannel.class)//设置UDP通道 //设置udp的管道工厂 .handler(new ChannelInitializer<NioDatagramChannel>() { //NioDatagramChannel标志着是UDP格式的 @Override protected void initChannel(NioDatagramChannel ch) throws Exception { // TODO Auto-generated method stub //创建一个执行Handler的容器 ChannelPipeline pipeline = ch.pipeline(); pipeline.addLast(new StringDecoder()); pipeline.addLast(new StringEncoder()); //执行具体的处理器 pipeline.addLast(group, "handler", new UdpServerHandler());//消息处理器 } })//初始化处理器 //true / false 多播模式(UDP适用),可以向多个主机发送消息 .option(ChannelOption.SO_BROADCAST, true)// 支持广播 .option(ChannelOption.SO_RCVBUF, 2048 * 1024)// 设置UDP读缓冲区为2M .option(ChannelOption.SO_SNDBUF, 1024 * 1024);// 设置UDP写缓冲区为1M })//初始化处理器 //true / false 多播模式(UDP适用),可以向多个主机发送消息 .option(ChannelOption.SO_BROADCAST, true)// 支持广播 .option(ChannelOption.SO_RCVBUF, 2048 * 1024)// 设置UDP读缓冲区为2M .option(ChannelOption.SO_SNDBUF, 1024 * 1024);// 设置UDP写缓冲区为1M // 绑定端口,开始接收进来的连接 ChannelFuture f = b.bind(port).sync(); //获取channel通道 //channel=f.channel(); System.out.println("UDP Server 启动!"); // 等待服务器 socket 关闭 。 // 这不会发生,可以优雅地关闭服务器。 f.channel().closeFuture().sync(); } catch (InterruptedException e) { e.printStackTrace(); } finally { // 优雅退出 释放线程池资源 group.shutdownGracefully(); workerGroup.shutdownGracefully(); } // 绑定端口,开始接收进来的连接 ChannelFuture f = b.bind(port).sync(); //获取channel通道 //channel=f.channel(); System.out.println("UDP Server 启动,端口:"+port); // 等待服务器 socket 关闭 。 // 这不会发生,可以优雅地关闭服务器。 f.channel().closeFuture().sync(); } catch (InterruptedException e) { e.printStackTrace(); } finally { // 优雅退出 释放线程池资源 group.shutdownGracefully(); workerGroup.shutdownGracefully(); } } }); thread.start(); } } blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyUdpServer/service/AnimalHeatService.java
New file @@ -0,0 +1,7 @@ package org.springblade.jfpt.nettyUdpServer.service; /** * 体温监测服务层接口层 */ public interface AnimalHeatService { } blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyUdpServer/service/impl/AnimalHeatServiceImpl.java
New file @@ -0,0 +1,17 @@ package org.springblade.jfpt.nettyUdpServer.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springblade.jfpt.nettyUdpServer.entity.BladeAnimalHeat; import org.springblade.jfpt.nettyUdpServer.mapper.AnimalHeatMapper; import org.springblade.jfpt.nettyUdpServer.service.AnimalHeatService; import org.springframework.stereotype.Service; @Service public class AnimalHeatServiceImpl extends ServiceImpl<AnimalHeatMapper, BladeAnimalHeat> implements AnimalHeatService { @Override public boolean save(BladeAnimalHeat entity) { return false; } }