上课就犯困星人 2015-01-12 09:16 采纳率: 0%
浏览 5476
已结题

android使用netty框架与PC服务端通信,接收到内容与发送内容不同

例如PC端发送888,android端却收到888后面还跟着一大串以前测试时候的内容,
部分代码如下,复制时括号有些错乱请勿在意:

 Bootstrap configureBootstrap(Bootstrap b, EventLoopGroup g) {
            b.group(g)
                    .channel(NioSocketChannel.class)
                    .remoteAddress(parements.getString("ServerIP", host),
                            parements.getInt("port", port)) // 配置端口
                    .option(ChannelOption.TCP_NODELAY, true)
                    // .option(ChannelOption.SO_KEEPALIVE, true) // 1
                    .handler(new ChannelInitializer<SocketChannel>() { //有连接到达时会创建一个channel
                        @Override
                        public void initChannel(SocketChannel ch)
                                throws Exception {  //pipeline管理channel中的Handler,在channel队列中添加一个handler来处理业务
                            ch.pipeline().addLast(
                                    new IdleStateHandler(READ_TIMEOUT, 3, 0),
                                    decoderHandler, handler);
                        }
                    });
            // Log.e("ConnService"," "+b.remoteAddress(parements.getString("ServerIP",
            // host), parements.getInt("port", port)));
            return b;
        }

public class UptimeClientHandler extends ChannelDuplexHandler {
。。。。。。
@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
if (startTime < 0) {
startTime = System.currentTimeMillis();
}
sender = ctx;
println("Connected to: " + ctx.channel().remoteAddress());
RequestTools.sTerminal_Request_Online(parements.getInt("nMacID", 0), parements.getInt("pairID", 0));
}
@Override
public void read(ChannelHandlerContext ctx) throws Exception {
// ctx中包含的msg已经和发送内容不同
super.read(ctx);

sendOnline();
}
@Override
public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
// TODO Auto-generated method stub
super.channelReadComplete(ctx);
ctx.flush();
}


 @Sharable 
 public class BasicCmdDecoder extends MessageToMessageDecoder<ByteBuf>  @Override
    protected void decode(ChannelHandlerContext ctx, ByteBuf buf,       
    //buf接收到的内容与发送内容不同
            List<Object> out) throws Exception {
        synchronized (object) {
            // TODO Auto-generated method stub
            msg.writeBytes(buf, 0, buf.writerIndex());  
            remainLenght = msg.readableBytes();         
            if(msg.readableBytes()<5){
                return;
            }
            略。。。
{

android菜鸟,还请大神们帮忙看看

  • 写回答

3条回答 默认 最新

  • bdmh 移动开发领域优质创作者 2015-01-12 09:19
    关注

    你们的编码方式统一吗

    评论

报告相同问题?

悬赏问题

  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决