From 0b25d230881ce4d56233a4834eb520d120f9a7a9 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期日, 25 六月 2023 17:15:50 +0800
Subject: [PATCH] 增加nettyTcp客户端

---
 src/main/java/com/ard/utils/tcp/NettyTcpClient.java                        |   47 +++++++++++++++
 src/main/resources/logback-spring.xml                                      |   26 ++++++++
 src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java                 |   43 ++++++++++++++
 src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java |    2 
 src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java             |    5 +
 5 files changed, 122 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java b/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java
index f0d3071..1726943 100644
--- a/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java
+++ b/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java
@@ -18,7 +18,7 @@
  * @date 2023-02-11
  */
 @Service
-@Slf4j
+@Slf4j(topic = "camera")
 public class ArdCamerasServiceImpl implements IArdCamerasService {
     @Resource
     private ArdCamerasMapper ardCamerasMapper;
diff --git a/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java b/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java
index bb9cbdb..360f727 100644
--- a/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java
+++ b/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson2.JSON;
 import com.ard.utils.DateUtils;
 import com.ard.utils.mqtt.MqttConsumer;
+import com.ard.utils.tcp.NettyTcpClient;
 import com.ard.utils.udp.NettyUdpServer;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
@@ -28,6 +29,8 @@
 public class TubeAlarmService {
     @Resource
     NettyUdpServer nettyUdpServer;
+    @Resource
+    NettyTcpClient nettyTcpClient;
     @Value("${spring.netty.port}")
     private Integer udpPort;
     @Value("${spring.netty.enabled}")
@@ -40,6 +43,8 @@
         }
         nettyUdpServer.init(udpPort);
         log.info("UDP鏈嶅姟宸茬粡鍚姩");
+        nettyTcpClient.init("112.98.126.2",1200);
+        log.info("TCP瀹㈡埛绔凡杩炴帴");
     }
 
     @Async("alarm")
diff --git a/src/main/java/com/ard/utils/tcp/NettyTcpClient.java b/src/main/java/com/ard/utils/tcp/NettyTcpClient.java
new file mode 100644
index 0000000..2d01793
--- /dev/null
+++ b/src/main/java/com/ard/utils/tcp/NettyTcpClient.java
@@ -0,0 +1,47 @@
+package com.ard.utils.tcp;
+
+import io.netty.bootstrap.Bootstrap;
+import io.netty.channel.ChannelFuture;
+import io.netty.channel.ChannelInitializer;
+import io.netty.channel.nio.NioEventLoopGroup;
+import io.netty.channel.socket.SocketChannel;
+import io.netty.channel.socket.nio.NioSocketChannel;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @ClassName: NettyTcpClient
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�06鏈�25鏃�17:00
+ * @Version: 1.0
+ **/
+@EnableAsync
+@Component
+@Slf4j(topic = "radar")
+public class NettyTcpClient {
+    @Async
+    public void init(String host, Integer port) {
+        NioEventLoopGroup group = new NioEventLoopGroup();
+        try {
+            Bootstrap bootstrap = new Bootstrap();
+            bootstrap.group(group)
+                    .channel(NioSocketChannel.class)
+                    .handler(new ChannelInitializer<SocketChannel>() {
+                        @Override
+                        protected void initChannel(SocketChannel ch) throws Exception {
+                            ch.pipeline().addLast(new NettyTcpClientHandler());
+                        }
+                    });
+            ChannelFuture future = bootstrap.connect(host, port).sync();
+            future.channel().closeFuture().sync();
+
+        } catch (Exception ex) {
+            log.error("nettyTcp瀹㈡埛绔垵濮嬪寲寮傚父:" + ex.getMessage());
+        } finally {
+            group.shutdownGracefully();
+        }
+    }
+}
diff --git a/src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java b/src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java
new file mode 100644
index 0000000..5770cdc
--- /dev/null
+++ b/src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java
@@ -0,0 +1,43 @@
+package com.ard.utils.tcp;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.SimpleChannelInboundHandler;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.xml.bind.DatatypeConverter;
+
+/**
+ * @Description: tcp瀹㈡埛绔鐞�
+ * @ClassName: NettyTcpClientHandler
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�06鏈�25鏃�17:02
+ * @Version: 1.0
+ **/
+@Slf4j
+public class NettyTcpClientHandler extends SimpleChannelInboundHandler<ByteBuf> {
+    @Override
+    protected void channelRead0(ChannelHandlerContext ctx, ByteBuf msg){
+        // 澶勭悊鎺ユ敹鍒扮殑娑堟伅
+        byte[] byteArray = new byte[msg.readableBytes()];
+        msg.getBytes(msg.readerIndex(), byteArray);
+        String hexString = DatatypeConverter.printHexBinary(byteArray);
+
+        log.info("Received: " + hexString);
+    }
+
+    @Override
+    public void channelActive(ChannelHandlerContext ctx) throws Exception {
+        // 褰撳鎴风杩炴帴鎴愬姛鍚庯紝鍙戦�佹秷鎭粰鏈嶅姟鍣�
+        ByteBuf message = ctx.alloc().buffer();
+        message.writeBytes("Hello, Server!".getBytes());
+        ctx.writeAndFlush(message);
+    }
+
+    @Override
+    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause){
+        // 鍙戠敓寮傚父鏃剁殑澶勭悊
+        cause.printStackTrace();
+        ctx.close();
+    }
+}
diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml
index f993d77..7f2dac9 100644
--- a/src/main/resources/logback-spring.xml
+++ b/src/main/resources/logback-spring.xml
@@ -54,6 +54,28 @@
             <onMismatch>DENY</onMismatch>
         </filter>
     </appender>
+    <!--閫氱敤鍏夌數鎶ヨ鏃ュ織杈撳嚭-->
+    <appender name="camera" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/camera.log</file>
+        <!--寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠�-->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--鏃ュ織鏂囦欢鍚嶆牸寮�-->
+            <fileNamePattern>${log.path}/camera.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!--杩囨护鐨勭骇鍒�-->
+            <level>INFO</level>
+            <!--鍖归厤鏃剁殑鎿嶄綔锛氭帴鏀讹紙璁板綍锛�-->
+            <onMatch>ACCEPT</onMatch>
+            <!--涓嶅尮閰嶆椂鐨勬搷浣滐細鎷掔粷锛堜笉璁板綍锛�-->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
     <root level="DEBUG">
         <appender-ref ref="console"/>
     </root>
@@ -65,5 +87,9 @@
     <root level="INFO">
         <appender-ref ref="tube"/>
     </root>
+    <!--閫氱敤鍏夌數鎶ヨ鎿嶄綔鏃ュ織-->
+    <root level="INFO">
+        <appender-ref ref="camera"/>
+    </root>
 </configuration>
 

--
Gitblit v1.9.3