2019-08-23

2754 단어
netty 브로드캐스트
프런트엔드 Ajax 요청 백엔드 코드
        String msg = TcpIpUtils.ipPack(ip, port);
        //
        ByteBuf out = Unpooled.buffer();
        byte[] bytes = HexUtils.fromHexString(msg);
        out.writeBytes(bytes);
        //  -          
        ChannelGroupFuture channelFutures = MyChannelHandlerPool.channels.writeAndFlush(out)
                .addListener(new ChannelGroupFutureListener() { // group   (        ChannelFutureListener)
                    @Override
                    public void operationComplete(ChannelGroupFuture channelFutures) throws Exception {
                        if (channelFutures.isSuccess()) { //       
                            //      
                            ipService.save(TcpIpUtils.getIpDO(ip,port));
                        }
                    }  //    
                });
        // todo       ,  done            

//        boolean done = channelFutures.isDone();
//        boolean success = channelFutures.isSuccess();
//        if (success) {
//            return R.ok();
//        } else {
//            return R.error();
//        }

어떻게 된 건지 모르겠어요. aax가 요청한 관계인 것 같아요. 지금 리더가 이 기능을 안 해요. 일단 놔두세요.
부호를 바꾸다
/**
     *  ip   16  
     * @param ipString
     * @return
     */
    public static String ipToLong(String ipString) {
        if(StringUtils.isBlank(ipString)){
            return null;
        }
        String[] ip=ipString.split("\\.");
        StringBuffer sb=new StringBuffer();
        for (String str : ip) {
            if (Integer.parseInt(str)<16) {
                sb.append("0"+Integer.toHexString(Integer.parseInt(str)));
            } else {
                sb.append(Integer.toHexString(Integer.parseInt(str)));
            }

        }
        return sb.toString();
    }

crc16 검사
 /**
     *   1-  CRC16   
     *
     * @param bytes
     * @return
     */
    public static String getCRC(byte[] bytes) {
        int CRC = 0x0000ffff;
        int POLYNOMIAL = 0x0000a001;

        int i, j;
        for (i = 0; i < bytes.length; i++) {
            CRC ^= ((int) bytes[i] & 0x000000ff);
            for (j = 0; j < 8; j++) {
                if ((CRC & 0x00000001) != 0) {
                    CRC >>= 1;
                    CRC ^= POLYNOMIAL;
                } else {
                    CRC >>= 1;
                }
            }
        }
        //     (   CRC :        )
        CRC = ( (CRC & 0x0000FF00) >> 8) | ( (CRC & 0x000000FF ) << 8);
//        return Integer.toHexString(CRC);//  
//        return String.format("%04X", CRC);//  
        return String.format("%04x", CRC);//  
    }

좋은 웹페이지 즐겨찾기