当前位置: 首页 > 知识库问答 >
问题:

在Netty服务器上,如何创建出站连接,然后像传入连接一样继续使用它们?

羊渝
2023-03-14

我正在开发一个系统,其中几个服务器需要相互连接并交换数据。我想在每台服务器中创建一个服务器套接字,接受新的传入连接,但同时向其他服务器发起一些出站连接。

一旦建立了连接,无论是入站还是出站,我都希望使用它,而不区分谁是发起人。毕竟,一旦建立,TCP连接是对称的。。。

有没有办法用Netty做到这一点?[我是新手…]看看ServerBootstrap,我不知道如何打开出站连接并“附加”它,以便我在ServerBootstrip中指定的处理程序为所有连接服务。

当然,我只能打开所有服务器的传出连接,但我发现每两台服务器之间只有一个连接会更优雅。

共有1个答案

华峰
2023-03-14

您是否考虑过额外的引导?

Bootstrap outboundBootstrap = new Bootstrap();
outboundBootstrap.group(workerGroup)
            .channel(EpollSocketChannel.class)
            .handler(new MyInit());

然后打开连接:

InetSocketAddress address =..;ChannelFuture future = outboundBootstrap.connect(address);
 类似资料:
  • 我在运行使用Netty的服务时遇到了问题。它启动和工作正常,但只有一次。在此之后,不接受任何连接(它们将立即被删除)。 当我第一次使用(示例端口,随便什么)连接到服务器时,一切正常: 客户端会话: 服务器日志: --编辑2-- 只要连接处于活动状态,服务器就可以正常工作--在关闭连接之前,我可以轻松地交换请求/响应。 不要被IP地址迷惑,这是一个转发到Docker的本地端口,应用程序就是在那里启动

  • Netty服务器,Fedora。我只是无法从远程主机连接到服务器,并且通过util没有显示监听套接字。但是我可以在同一台机器上建立运行客户端和服务器的连接。就像这样: 我已尝试仅使用端口、localhost IP、0.0.0.0 IP和网络IP初始化

  • 我正在编写一个服务器应用程序及其客户端对应物,它们都使用Netty作为网络层。我发现自己面临着将密码从客户端发送到服务器的典型安全问题,因此我认为SSL是最安全的方法。 我知道securechat示例,并将使用它来相应地修改我的管道。但是,我也想在密码传输后禁用SSL,并确认在服务器端节省一些宝贵的CPU周期,这可能会忙于许多其他客户端。ChannelPipeline留档声明: 一旦连接,通道和管

  • 我希望netty服务器A在启动时连接netty服务器B,听起来像代理,所以我尝试了netty代理示例,但它只是在中启动netty客户端,只有一个新的连接处于活动状态,客户端才会被创建。当服务器A启动时,我需要通知服务器B做一些“注册”的事情,我该怎么办?

  • 线程“main”io.netty.channel.abstractchannel$AnnotatedConnectException:连接被拒绝:无进一步信息:/127.0.0.1:8888在sun.nio.channel.checkConnect(本机方法)在sun.nio.channel.socketchannel.finishConnect(未知源)在io.netty.channel.soc

  • 问题内容: PHP中是否可以关闭连接(本质上告诉浏览器没有更多数据可用)但是可以继续处理。我正在考虑的特定情况是,我想提供缓存的数据,然后,如果缓存已过期,我仍然会提供缓存的数据以快速响应,关闭连接,但继续进行处理以重新生成并缓存新的数据数据。本质上,唯一的目的是使网站显得更具响应性,因为在用户等待内容重新生成时不会偶尔出现延迟。 更新: PLuS对我一直在寻找最接近的答案。为了澄清几个人,我正在