gpt4 book ai didi

java - 基本 Netty 演示无法同时处理 TCP 和 UDP 套接字

转载 作者:行者123 更新时间:2023-12-01 11:34:33 24 4
gpt4 key购买 nike

我有以下文件:

https://gist.github.com/anonymous/58c7cf4341acfe83f279

我知道我可以大大简化这个过程,我这样做只是出于概念原因。

当我运行此命令时,只有 UDP 连接有效。当我注释掉 UDP 时,TCP 工作正常。

为什么两个套接字不能同时工作?我觉得这与线程有关,但如果我理解正确的话,它们都使用不同的线程池,所以我完全不知所措。

目前我想做的就是有一些东西可以监听/写入一个 TCP 套接字和一个 UDP 套接字。 (可能有一个 UDP 写入作为第三个套接字)。

有什么建议吗?

最佳答案

您的服务器以顺序方式执行。只有当你的UDP服务器关闭时,你的TCP才会被执行。

一种解决方案是修改UDP服务器以避免最后阻塞。变化:

  b.bind(port).sync().channel().closeFuture().await();

至:

  b.bind(port);

并将 group.shutdownGraceously() 放在最后(无论如何你都必须在另一个地方做。)

另一种(也许更好)方法:代码可以调整为在两个线程中执行,以便允许并发执行。将“implment Runnable”添加到您的 UdpServer 和 TcpServer,并通过捕获抛出异常来删除它。接下来从主线程运行两个线程:

new Thread(new UdpServer(9094)).start();
new Thread(new TcpServer(9093)).start();

关于java - 基本 Netty 演示无法同时处理 TCP 和 UDP 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30140904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com