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

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

  •  
  •   gramyang · 85 天前 · 1229 次点击
    这是一个创建于 85 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天才出现的情况,之前都没有出现过。。。
    操作系统是 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 条附言  ·  85 天前
    wdnmd 我搞定了卧槽!!!!!!

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

    这算不算微软故意打压华为??!!
    第 2 条附言  ·  85 天前
    见鬼了,重启之后又不行了。。。。。

    给 win10 跪了。。。。看来得弄个云服务搭建 linux 作为测试环境了。。
    第 3 条附言  ·  85 天前
    最后给防火墙的入站规则放行了服务端口,总算能行了。。
    14 回复  |  直到 2019-08-30 10:31:04 +08:00
        1
    Malthael   85 天前
    是不是第一个长连接断掉之后就再也连不上了
        2
    gramyang   85 天前
    @Malthael 不是,是 netty 服务只能连接一个长连接,后面的全部连接不上了。连上的长连接是有效的。把服务关掉后也是这样的,重启系统后也是这样的
        3
    gramyang   85 天前
    @Malthael 纠正:是电脑上开的虚拟机可以连上,但是真机测试连不上。。
        4
    Malthael   85 天前
    贴出来看看你的 childHandler 里是怎么添加 ChannelHandler 的
        5
    gramyang   85 天前
    @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 里面传入的是多个用户交互的数据结构
        6
    Malthael   85 天前
    如果只有真机有问题,虚拟机没问题的话查查真机的配置,网络环境,是不是在同一个局域网
        7
    PDX   85 天前 via iPhone
    你的 child handler 是单例,而且不是 shareble 的
        8
    gramyang   85 天前
    @Malthael 连的同一个 wifi,应该算是在同一个局域网吧
        9
    lx0758   85 天前
    我这边一个 Android 做服务器,能接受多个客户端长连接额
        10
    BingoXuan   85 天前
    看问题不要先入为主。先去找资料,整理论据,提出自己的看法。捕风捉影都是徒劳。还是前辈说得好,不要听的风就是雨。最近 v 站总是会因为一个很简单的问题,最终却演变成无意义的争吵。大多都是情感先于理性。

    https://www.ithome.com.tw/news/115072
        11
    Thiece   85 天前
    SMB 1.0 多老了,华为自己作
        12
    sujin190   85 天前
    难道不是华为问题?都多老了,而且一堆漏洞把,早该搞掉了,现在好多 client 都要求 2.0 了
        13
    Love4Taylor   85 天前
    故意打压... 被害妄想症?
        14
    dosmlp   83 天前
    smb1.0 都多老的协议了,漏洞满天飞
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2597 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 14:12 · PVG 22:12 · LAX 06:12 · JFK 09:12
    ♥ Do have faith in what you're doing.