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

时间:2016-08-19 01:34:41

标签: java firebase netty solaris firebase-cloud-messaging

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

我在Windows 7中完成了测试。

效果很好。

但是solaris没有运行它。

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

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

此异常错误发生在

之后
  

" [ClientHandler.channelOpen]"

然后运行到

  

" [ClientHandler.channelClosed]"

所以,我确实尝试在立即" [ClientHandler.channelOpen]"。

后立即向FCM服务器写信息。

从FCM Server发送的消息。

又出现了另一个异常错误。

"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。

1 个答案:

答案 0 :(得分:1)

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

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

  1. 告诉我们您的Solaris版本。做cat /etc/release和 发布输出。

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

  3. 安德鲁·亨利的评论很有见。您应该执行telnet测试。 它提供了有价值的信息这是一种众所周知的测试方法 连接,它应该是任何IT人员工具箱的一部分 你是开发人员或系统管理员,恕我直言。 (Windows人通常会这样做 不知道'telnet测试'主要是因为微软决定了 telnet client should no longer be installed by default on Windows