#
luxiaotao1123
2022-07-30 6511f7bad1c4f3cf342a21c1d68c5deb0e4ee80f
#
2个文件已修改
39 ■■■■ 已修改文件
src/main/java/com/zy/core/netty/handle/PackageServerHandler.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/netty/handle/ProtocolDecoder.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/netty/handle/PackageServerHandler.java
@@ -3,13 +3,10 @@
import com.zy.core.netty.AbstractInboundHandler;
import com.zy.core.netty.cache.ChannelCache;
import com.zy.core.netty.domain.ChPackage;
import com.zy.core.netty.properties.TcpProperties;
import com.zy.core.properties.SlaveProperties;
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
@@ -21,32 +18,10 @@
@ChannelHandler.Sharable
public class PackageServerHandler extends AbstractInboundHandler<ChPackage> {
    @Autowired
    private SlaveProperties slaveProperties;
    @Autowired
    private TcpProperties tcpProperties;
    @Override
    protected boolean channelRead0(ChannelHandlerContext ctx, ChPackage pac) {
        byte[] bytes = pac.getBytes();
        System.out.println("客户端断开===>>" + new String(bytes, 0, bytes.length));
//        log.info("读码器【IP:{}】 上行数据 ===>> {}", pac.getIp(), pac.getAscii());
//        //扫码上传数据格式必须2个#开头,如:##12345678
//        String msg = pac.getAscii().replaceAll("#", "");
//        if(!Cools.isEmpty(msg) && msg.length()>=tcpProperties.getBarcodeLen()){
//            msg = msg.substring(0,tcpProperties.getBarcodeLen());
//
//            for (Slave slave : slaveProperties.getBarcode()) {
//                if (slave.getIp().equals(pac.getIp())) {
//                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, slave.getId());
//                    if (barcodeThread == null) { continue; }
//                    barcodeThread.setBarcode(msg);
//                    break;
//                }
//            }
//        }
        log.info("{}", pac.getBytes().length);
        return true;
    }
src/main/java/com/zy/core/netty/handle/ProtocolDecoder.java
@@ -7,6 +7,7 @@
import io.netty.buffer.ByteBufUtil;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;
import lombok.extern.slf4j.Slf4j;
import java.net.InetSocketAddress;
import java.nio.charset.StandardCharsets;
@@ -15,6 +16,7 @@
/**
 * Created by vincent on 2019-04-10
 */
@Slf4j
public class ProtocolDecoder extends ByteToMessageDecoder {
    private final SnowflakeIdWorker snowflakeIdWorker;
@@ -26,22 +28,14 @@
    @Override
    protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> list) throws Exception {
        byte[] bytes = new byte[in.readableBytes()];
        in.readBytes(bytes);
        // 生成和初始化消息包装类
        String ip = ((InetSocketAddress) ctx.channel().remoteAddress()).getAddress().getHostAddress();
        ChPackage pac = ChPackage.valueOfEmpty(String.valueOf(snowflakeIdWorker.nextId()), ip);
        pac.setSourceBuff(in);
        pac.setBytes(bytes);
        list.add(pac);
        // 解析
//        list.add(analyzeProtocol(pac));
        list.add(analyzeProtocol(pac));
    }
    public ChPackage analyzeProtocol(ChPackage pac){