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

Netty客户端连接

陈鸿才
2023-03-14

在Netty中创建客户端连接时,我有一个问题。

Configuring a channel
Options are used to configure a channel:

 ClientBootstrap b = ...;

 // Options for a new channel
 b.setOption("remoteAddress", new InetSocketAddress("example.com", 8080));
 b.setOption("tcpNoDelay", true);
 b.setOption("receiveBufferSize", 1048576);

这里,为什么我们没有一个bind方法,将通道绑定到发起客户端连接的端口(在客户端)?我们唯一需要提供的就是给出服务器地址和端口如下:

channel = bootstrap.connect(new InetSocketAddress(host, port));

这是在客户端还是服务器端创建了一个新的通道?此通道绑定在客户端的哪个端口?

我们在执行服务器端引导时进行绑定,如下所示

 ServerBootstrap b = ...;
 channel = b.bind(b.getOption("localAddress"));

我很困惑,不明白客户端从哪个端口向服务器发送数据,使用的是什么通道?

共有1个答案

魏航
2023-03-14

您应该使用clientbootstrap.connect(remoteAddress,localAddress)指定要创建的套接字的本地地址。或者,您可以调用ClientBootstrap.bind(localAddress).sync(),然后调用ClientBootstrap.Connect(remoteAddress)来实现同样的目的。

 类似资料:
  • 我试图理解netty http客户端连接池。如果是NIO和异步的,那么这个连接池的意义是什么? 例如:如果服务A调用服务B,并且服务A的客户端连接池计数设置为50,那么这是否意味着我们最多只能发出50个并行请求? 更新: 我在3.5秒内完成了所有通话。理想情况下,有一个连接,我应该在150秒内完成。

  • 我正在使用Netty 4.0构建一个客户端/服务器。服务器正在正确监听localhost:8083并且我可以远程登录它,它会正确触发服务器断点。但是当我尝试使用这段代码连接时: 它在sync()处抛出异常:java.nio.channels.ClosedChannelException。如前所述,当我telnet 127.0.0.1 8083(或用Socket连接代码)时,它确实有效。知道吗?非常

  • 我正在尝试从另一台机器创建与基于java的套接字服务器的多个客户端连接。服务器和客户端都使用Netty 4进行NIO。在服务器端,我使用了boss和Worker group,它能够在单个linux盒上接收和服务器100000并发连接(在设置内核参数和ulimited之后)。 但是,我最终在客户端为每个连接创建了一个新线程,这导致了JVM线程限制异常。 有人能告诉我,我如何使用Netty从客户端创建

  • 故事是这样的,我有一个远程服务器和一个防火墙后面的客户端。客户端由netty实现,它将建立一个与远程服务器的保活连接。如果200秒内通道中没有消息传输,防火墙将重置连接到远程服务器端的连接,但客户端没有收到任何tcp数据包(例如RST包),因此客户端认为此连接是活的,而事实并非如此。那么如何在防火墙错误处理此保活连接之前强制关闭不寻常的连接呢?顺便说一句:我无法配置防火墙

  • 我对如何处理网络中的大量连接感到困惑(3.6.2。FINAL)和保持活着=true。 对于作为服务器端连接器在netty客户机上工作,对另一个服务进行http调用,它希望始终保持连接打开以获得性能(keep alive=true)。 问题:开放频道的数量有一个硬限制,超过这个限制,客户端在尝试打开频道时将挂起。为什么没有例外只是挂起?这是通道超时的设置吗? 我似乎无法理解Netty对工作线程内连接

  • 我需要让客户能够建立许多连接。我使用Netty 4.0。不幸的是,所有现有的示例都没有显示如何创建大量连接。 这是正确的决定吗?还是会更好?