多端口Netty套接字服务器

时间:2016-01-22 19:07:32

标签: java sockets netty

我正在尝试使用Netty开发以下用例:

  1. 客户端连接到(端口8900)上的中间服务器。
  2. 客户端将带有配置的处理器请求发送到另一台计算机。
  3. 第3台机器,根据配置启动处理器。
  4. 处理器根据配置中标识的端口(例如,端口8901)连接到启动处理器的同一服务器。
  5. 服务器现在根据两者之间共享的唯一哈希值匹配客户端和处理器。
  6. 为每个新的客户端连接创建新的处理器。
  7. 客户端连接不是问题。我有一个处理这些请求的ClientHandler。但是我在注册ProcessorHandler时遇到了问题(必须根据客户端发送的配置动态绑定)并使其服务于特定的客户端。

    任何帮助都会非常感激,因为我目前很难理解,从ClientHandler开始,一旦发送了处理器的配置,我就可以在服务器上启动一个新的服务器套接字并将客户端链接到它的处理器。

    客户端和处理器共享一个唯一的哈希值,可用于识别哪个处理器应该为哪个客户端服务。

    我基本上一直在使用Netty HexProxy Example的想法,但我需要另一个服务器套接字来代替客户端套接字。我想通过向另一个管道添加处理程序或执行与Netty SecureChat Example类似的操作来链接两者。

1 个答案:

答案 0 :(得分:0)

通过重新设想场景,我能够解决这个问题。

不是将客户端视为客户端而将处理器视为服务于特定客户端请求的服务器,而是将其视为连接到聊天服务器(中间服务器)的客户端。

通过将引导程序发送到HandshakeHandler来建立任意服务器端口,HandshakeHandler绑定并同步当前未绑定的端口。

也是HandshakeHandler,它通过唯一的哈希,将客户端和处理器连接到一个特定的ChannelGroup,并根据需要为每个通道重新配置通道管道(一旦客户端和处理器之间的握手成功完成,就自行移除)。