永恒V之星 2021-09-18 12:02 采纳率: 33.3%
浏览 18
已结题

android Netty发送Http和Socket请求收不到服务器反馈的问题

我在Android 和服务器都是用的Netty框架,原来采用的都是socket通讯,现在我需要增加Http请求。参考了网上一片博文后服务端可以同时处理socket和http通讯,浏览器和socket测试过 链接:Netty如何实现同一个端口接收TCP和HTTP请求 https://my.oschina.net/succy/blog/4724766

测试结果

img

现在遇到问题是android 端收不到 socket和http通讯返回的数据;并且多次请求后还会报错:
rejectedExecution: Failed to submit a listener notification task. Event loop shut down?
android端netty配置如下:

EventLoopGroup loopGroup = new NioEventLoopGroup();
        try {
            Bootstrap bootstrap = new Bootstrap();
            bootstrap.group(loopGroup).channel(NioSocketChannel.class)
                    .option(ChannelOption.TCP_NODELAY, true)
                    //.option(ChannelOption.SO_BACKLOG, 512)
                    .option(ChannelOption.RCVBUF_ALLOCATOR, AdaptiveRecvByteBufAllocator.DEFAULT)
                    .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 30000)
                    .remoteAddress(new InetSocketAddress(HOST, PORT))
                    .handler(new ChannelInitializer<SocketChannel>() {

                        @Override
                        protected void initChannel(SocketChannel ch) throws Exception {
                           // ch.pipeline().addLast(new StringEncoder(Charset.forName("GBK")));
                            ch.pipeline().addLast(new HttpRequestEncoder());
                            ch.pipeline().addLast(new HttpResponseDecoder());
                           // ch.pipeline().addLast(new ByteArrayEncoder());
                            ch.pipeline().addLast(new PortUnificationServerHandler());
                        }
                    });

            ChannelFuture future = bootstrap.connect().sync();
            future.channel().closeFuture().sync();
        } catch (InterruptedException e) {
            LogUtils.e(TAG, e.getMessage());
            e.printStackTrace();

        } finally {
            try {
                loopGroup.shutdownGracefully().sync();
            } catch (InterruptedException e) {
                LogUtils.e(TAG, e.getMessage());
                e.printStackTrace();
            }
        }


PortUnificationServerHandler这个类和服务端基本一致,见上面链接中博文,我觉得客户端这样配置不对,但不知道怎么配置Netty客户端才能兼容发送Socket和Http请求。在 channelActive 等函数中都有打上日志但没有响应。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 9月26日
    • 创建了问题 9月18日

    悬赏问题

    • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
    • ¥15 vue3+express部署到nginx
    • ¥20 搭建pt1000三线制高精度测温电路
    • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
    • ¥15 画两个图 python或R
    • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
    • ¥15 八路抢答器设计出现故障
    • ¥15 opencv 无法读取视频
    • ¥15 按键修改电子时钟,C51单片机
    • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))