Netty UDP 服务器引导程序

Han*_*nsa 5 udp netty

我发现所有使用 Netty 4.0 的 TCP 服务器实现都使用 ServerBootstrap 实例。

Netty 中服务器和客户端之间最大也是唯一的区别是使用了不同的 Bootstrap 和 Channel 实现。请看下面的代码:

谈论 TCP 客户端的netty 文档


但是对于 UDP 来说,这句话似乎无关紧要?!我找到了仅使用 Bootstrap 的 UDP 服务器示例,例如:1 , 2 , 3

我对此很困惑,所以我的两个问题是:

  • Bootstrap 类是实现 UDP 服务器的正确入口点吗?或者我可以使用 ServerBootstrap 吗?
  • 为什么 TCP 有 NioServerSocketChannel.class 和 NioSocketChannel.class,而 UDP 只有一个 NioDatagramChannel.class(而没有 NioServerDatagramChannel.class)?

对于 Netty 3.x,此处显示了 ConnectionlessBootstrap 但对于 4.0,我找不到类似的东西。

Han*_*nsa 7

根据我的发现:Bootstrap 是 Netty 4.x 中 UDP 服务器的正确入口点

并且不需要 NioServerDatagramChannel,因为 UDP 服务器为所有客户端打开一个通道。

  • ServerBootstrap 允许许多客户端通过其通道进行连接。因此 TCP 有一个专用的 ServerSocketChannel。
  • Bootstrap 用于为单个连接创建通道。因为 UDP 对所有客户端都有一个通道,所以只需要引导程序是有意义的。所有客户端都绑定到同一个频道。