qt和android文件传输,Qt C++与Android Netty之间传输字节码问题
1 技术栈结构服务端是qt c++写的,客户端是android移动设备,程序语言为java。2 技术流android端连接服务器,之间的通讯协议用protobuf,传输的是字节码流。qt :QByteArray; Java : byte[]数组3 发送数据Qt:QTcpSocket conn;QByteArray ba;conn.write(ba.data(), ba.length());Andr
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);
}
}
更多推荐
所有评论(0)