我不知道为什么会这样? "java.nio.channels.UnresolvedAddressException"

I don't know why occurred this? "java.nio.channels.UnresolvedAddressException"

我制作的程序具有使用 Netty 将消息发送到 FCM 服务器的功能。

我在Windows 7.

完成了测试

效果很好。

但 solaris 没有 运行 这个。

我在 solaris 中得到一个异常代码。

[ClientHandler.exceptionCaught] Unexpected exception from downstream.java.nio.channels.UnresolvedAddressException

此异常错误发生在

之后

"[ClientHandler.channelOpen]"

然后是运行

"[ClientHandler.channelClosed]"

所以,我确实尝试在立即“[ClientHandler.channelOpen]”之后向 FCM 服务器写入消息。

从 FCM 服务器发送的消息。

并遇到另一个异常错误。

"java.nio.channels.NotYetConnectedException"

即知上述问题出现错误

我不知道为什么会发生 "UnresolvedAddressException"。

我认为是因为 Solaris 防火墙的问题。

如何处理这个问题?

添加到.. Ping 测试结果

ping 64.233.187.188
64.233.187.188 is alive

注意 - 此 IP 是通过使用

获得的
String ip = "fcm-xmpp.googleapis.com";
int port = 5236;
new InetSocketAddress (ip, port) .getAddress () getHostAddress () 

在 java.

随着我们的推进,我会改进这个答案。

您的 Solaris 系统似乎配置有误。在主机名查找方面配置错误。

  1. 让我们知道您的 Solaris 版本。做 cat /etc/release 和 post 输出。

  2. 在 Solaris 上有一个名为 Solaris 名称服务守护程序的野兽 缓存名称信息。其他 OS 也有类似的概念。 Solaris 中的所有相关系统调用都会向此守护进程询问名称 信息,但是 nslookup 工具会绕过这个并询问 直接从 DNS 服务器。这就是为什么你可以成功 nslookup,而名称查找通常不起作用。底线: nslookup有时候不是你想做的测试。使用 getent 命令,如 getent hosts fcm-xmpp.googleapis.com.

  3. Andrew Henley 的评论很到位。您应该执行 telnet 测试。 它提供了有价值的信息。这是众所周知的测试方法 连接性,它应该成为任何 IT 人员工具箱的一部分,无论 恕我直言,您是开发人员或系统管理员。 (Windows 人们通常会 不知道 'telnet test' 主要是因为微软已经决定 telnet 客户端不应再默认安装在 Windows)