V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gramyang
V2EX  ›  Java

求助:局域内网架设的 netty 服务端只能接受一个长连接

  •  
  •   gramyang · 2019-08-28 16:20:01 +08:00 · 3198 次点击
    这是一个创建于 1912 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天才出现的情况,之前都没有出现过。。。
    操作系统是 win10,用 android 作为连接前端,真机和虚拟机都有。

    我猜测这是 win10 或者 android 上的哪个地方限制了,求大佬支招。。。。

    netty 服务端的代码非常简单,虽然我认为肯定不是这里的问题,但是我也放出来了:
    @PostConstruct
    public void startServer() {
    for(int i = 1; i <= 300; i++) playerMap.put(i, new Player());
    for(int j = 1; j <= 100; j++) tableMap.put(j, new Table());
    ServerBootstrap b = new ServerBootstrap();
    b.group(boss, work)
    .channel(NioServerSocketChannel.class)
    .option(ChannelOption.SO_BACKLOG, 128)
    .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10 * 1000)
    .childOption(ChannelOption.TCP_NODELAY, true)
    .childHandler(this)
    .bind(6789)
    .addListener(new ChannelFutureListener() {
    @Override
    public void operationComplete(ChannelFuture future) throws Exception {
    future.removeListener(this);
    if(!future.isSuccess() && future.cause() != null) log.error("服务器绑定端口失败", future.cause());
    if(future.isSuccess()) log.info("服务器绑定端口成功");
    }
    });
    }
    第 1 条附言  ·  2019-08-28 17:14:41 +08:00
    wdnmd 我搞定了卧槽!!!!!!

    简单来说,win10 最近一次更新自动卸载了 SMB 1.0/CIFS 客户端,而这个客户端是华为手机使用的通讯方式。。。。

    这算不算微软故意打压华为??!!
    第 2 条附言  ·  2019-08-28 18:36:54 +08:00
    见鬼了,重启之后又不行了。。。。。

    给 win10 跪了。。。。看来得弄个云服务搭建 linux 作为测试环境了。。
    第 3 条附言  ·  2019-08-28 20:13:33 +08:00
    最后给防火墙的入站规则放行了服务端口,总算能行了。。
    14 条回复    2019-08-30 10:31:04 +08:00
    Malthael
        1
    Malthael  
       2019-08-28 16:29:44 +08:00
    是不是第一个长连接断掉之后就再也连不上了
    gramyang
        2
    gramyang  
    OP
       2019-08-28 16:31:30 +08:00
    @Malthael 不是,是 netty 服务只能连接一个长连接,后面的全部连接不上了。连上的长连接是有效的。把服务关掉后也是这样的,重启系统后也是这样的
    gramyang
        3
    gramyang  
    OP
       2019-08-28 16:34:35 +08:00
    @Malthael 纠正:是电脑上开的虚拟机可以连上,但是真机测试连不上。。
    Malthael
        4
    Malthael  
       2019-08-28 16:34:45 +08:00
    贴出来看看你的 childHandler 里是怎么添加 ChannelHandler 的
    gramyang
        5
    gramyang  
    OP
       2019-08-28 16:38:23 +08:00
    @Malthael 跟那个没关系,这几天测试都是好好的,而且这些代码都没改过。不过我还是放出来吧
    ChannelPipeline pipeline = ch.pipeline();
    ByteBuf delimiter = Unpooled.copiedBuffer(Constant.LINE_SEPARATOR.getBytes());
    pipeline.addLast(new DelimiterBasedFrameDecoder(10240,delimiter));
    pipeline.addLast(new IdleStateHandler(60,0, 0));
    pipeline.addLast(new StringDecoder(Charset.forName("UTF-8")));
    pipeline.addLast(new StringEncoder(Charset.forName("UTF-8")));
    pipeline.addLast(handleGroup, new NettyServerHandler(playerMap, tableMap, userName2Player));
    handler 里面传入的是多个用户交互的数据结构
    Malthael
        6
    Malthael  
       2019-08-28 16:44:20 +08:00
    如果只有真机有问题,虚拟机没问题的话查查真机的配置,网络环境,是不是在同一个局域网
    PDX
        7
    PDX  
       2019-08-28 16:48:41 +08:00 via iPhone
    你的 child handler 是单例,而且不是 shareble 的
    gramyang
        8
    gramyang  
    OP
       2019-08-28 16:50:18 +08:00
    @Malthael 连的同一个 wifi,应该算是在同一个局域网吧
    lx0758
        9
    lx0758  
       2019-08-28 17:03:13 +08:00
    我这边一个 Android 做服务器,能接受多个客户端长连接额
    BingoXuan
        10
    BingoXuan  
       2019-08-28 17:40:04 +08:00
    看问题不要先入为主。先去找资料,整理论据,提出自己的看法。捕风捉影都是徒劳。还是前辈说得好,不要听的风就是雨。最近 v 站总是会因为一个很简单的问题,最终却演变成无意义的争吵。大多都是情感先于理性。

    https://www.ithome.com.tw/news/115072
    Thiece
        11
    Thiece  
       2019-08-28 17:45:37 +08:00
    SMB 1.0 多老了,华为自己作
    sujin190
        12
    sujin190  
       2019-08-28 17:49:15 +08:00
    难道不是华为问题?都多老了,而且一堆漏洞把,早该搞掉了,现在好多 client 都要求 2.0 了
    Love4Taylor
        13
    Love4Taylor  
       2019-08-28 18:06:04 +08:00
    故意打压... 被害妄想症?
    dosmlp
        14
    dosmlp  
       2019-08-30 10:31:04 +08:00
    smb1.0 都多老的协议了,漏洞满天飞
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1049 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 22:32 · PVG 06:32 · LAX 14:32 · JFK 17:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.