美文网首页
Qt C++与Android Netty之间传输字节码问题

Qt C++与Android Netty之间传输字节码问题

作者: 闭上说 | 来源:发表于2021-03-30 17:40 被阅读0次

    1 技术栈结构

    服务端是qt c++写的,客户端是android移动设备,程序语言为java。

    2 技术流

    android端连接服务器,之间的通讯协议用protobuf,传输的是字节码流。qt :QByteArray; Java : byte[]数组

    3 发送数据

    Qt:

    QTcpSocket conn;

    QByteArray ba;

    conn.write(ba.data(), ba.length());

    Android:

    Bootstrap bootstrap =new Bootstrap();

    bootstrap.group(group).channel(NioSocketChannel.class)

    .option(ChannelOption.TCP_NODELAY,true)

    .handler(new ChannelInitializer() {

    @Override

                    protected void initChannel(SocketChannel ch)throws Exception {

    ch.pipeline()

    .addLast(new ByteArrayEncoder())//这个很关键

    .addLast(new ByteArrayDecoder())//这个很关键

    .addLast(new NettyHandler(new NettyHandler.HandlerCallback() {

    @Override

                                    public void onError() {

    if(mListener !=null){

    mListener.onError(ERROR_RECV);

    }

    }

    @Override

                                    public void onDataRecv(byte[] data) {

    if(mListener !=null){

    mListener.onRecvData(data);

    }

    }

    }));

    }

    });

    mChannelFuture =bootstrap.connect(host, port)

    .addListener(future -> {

    boolean isSuccess = future.isSuccess();

    if(isSuccess ==true){

    if(mListener !=null){

    mListener.onConnectSuccess();

    }

    }else{

    if(mListener !=null){

    mListener.onConnectFail();

    }

    }

    })

    .sync();

    }catch (Exception e){

    e.printStackTrace();

    group.shutdownGracefully();

    if(mListener !=null){

    mListener.onError(ERROR_CONNECT);

    }

    }

    相关文章

      网友评论

          本文标题:Qt C++与Android Netty之间传输字节码问题

          本文链接:https://www.haomeiwen.com/subject/tjpghltx.html