如何让我的 netty 客户端检测我的 netty 服务器是否在端口上侦听(可用)?

How can I have my netty client detect if my netty server listens on a port (is available)?

我有一个 netty 客户端,如果服务器应用程序正在侦听,它可以正常工作。但是,如果服务器应用程序不是 运行,因此没有在端口上侦听,客户端仍然运行,就好像它希望服务器在那里一样。

我想处理服务器未监听的情况,在这种情况下甚至不发送数据(而是做其他事情,比如告诉用户联系管理员等)。这可能吗?

注意: 如果客户端尝试连接到未指定的端口或 ip,我的客户端会抛出我可以处理的异常。我的问题是,当服务器没有在它通常应该侦听的端口上侦听时,不会抛出任何异常。

是的。有时您无法检测到服务器 down/not 正在侦听端口。

因此,对于这种情况,您可以添加到您的客户端管道 ReadTimeoutHandler。如果您的客户端在特定时间段内没有从服务器收到任何消息,这将抛出 ReadTimeoutException。 然而,这可能还不够。例如,当服务器和客户端之间的连接不是很活跃时,也可能会抛出此异常。因此,对于这种情况,您可能需要实施乒乓处理程序,它将告诉您 ReadTimeoutHandler 连接处于活动状态,并且在这种情况下不会抛出异常。