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

2019-08-28 16:20:01 +08:00
 gramyang
今天才出现的情况,之前都没有出现过。。。
操作系统是 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("服务器绑定端口成功");
}
});
}
3077 次点击
所在节点    Java
14 条回复
Malthael
2019-08-28 16:29:44 +08:00
是不是第一个长连接断掉之后就再也连不上了
gramyang
2019-08-28 16:31:30 +08:00
@Malthael 不是,是 netty 服务只能连接一个长连接,后面的全部连接不上了。连上的长连接是有效的。把服务关掉后也是这样的,重启系统后也是这样的
gramyang
2019-08-28 16:34:35 +08:00
@Malthael 纠正:是电脑上开的虚拟机可以连上,但是真机测试连不上。。
Malthael
2019-08-28 16:34:45 +08:00
贴出来看看你的 childHandler 里是怎么添加 ChannelHandler 的
gramyang
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
2019-08-28 16:44:20 +08:00
如果只有真机有问题,虚拟机没问题的话查查真机的配置,网络环境,是不是在同一个局域网
PDX
2019-08-28 16:48:41 +08:00
你的 child handler 是单例,而且不是 shareble 的
gramyang
2019-08-28 16:50:18 +08:00
@Malthael 连的同一个 wifi,应该算是在同一个局域网吧
lx0758
2019-08-28 17:03:13 +08:00
我这边一个 Android 做服务器,能接受多个客户端长连接额
BingoXuan
2019-08-28 17:40:04 +08:00
看问题不要先入为主。先去找资料,整理论据,提出自己的看法。捕风捉影都是徒劳。还是前辈说得好,不要听的风就是雨。最近 v 站总是会因为一个很简单的问题,最终却演变成无意义的争吵。大多都是情感先于理性。

https://www.ithome.com.tw/news/115072
Thiece
2019-08-28 17:45:37 +08:00
SMB 1.0 多老了,华为自己作
sujin190
2019-08-28 17:49:15 +08:00
难道不是华为问题?都多老了,而且一堆漏洞把,早该搞掉了,现在好多 client 都要求 2.0 了
Love4Taylor
2019-08-28 18:06:04 +08:00
故意打压... 被害妄想症?
dosmlp
2019-08-30 10:31:04 +08:00
smb1.0 都多老的协议了,漏洞满天飞

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/595929

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX