我让程序具有使用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
注意 - 使用
获得此IPString ip = "fcm-xmpp.googleapis.com";
int port = 5236;
new InetSocketAddress (ip, port) .getAddress () getHostAddress ()
在java。
答案 0 :(得分:1)
随着我们前进,我会改进这个答案。
您似乎配置错误的Solaris系统。在主机名查找方面配置错误。
告诉我们您的Solaris版本。做cat /etc/release
和
发布输出。
在Solaris上有一个名为 Solaris名称服务守护程序的野兽
它缓存了名称信息。其他操作系统也有类似的概念。
Solaris中的所有相关系统调用都会询问此守护程序的名称
信息,但nslookup
工具绕过这个并询问
直接来自DNS服务器。这就是为什么你可以成功的原因
nslookup
,而名称查找通常不起作用。底线:
nslookup
有时候不是你想要做的考试。使用getent
而是命令,如getent hosts fcm-xmpp.googleapis.com
。
安德鲁·亨利的评论很有见。您应该执行telnet
测试。
它提供了有价值的信息这是一种众所周知的测试方法
连接,它应该是任何IT人员工具箱的一部分
你是开发人员或系统管理员,恕我直言。 (Windows人通常会这样做
不知道'telnet测试'主要是因为微软决定了
telnet client should no longer be installed by default on
Windows)