java - 我不知道为什么会出现这种情况? "java.nio.channels.UnresolvedAddressException"

标签 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 服务器发送的消息。

并出现另一个异常错误。

"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 并 发布输出。

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

  3. 安德鲁·亨利 (Andrew Henley) 的评论非常正确。您应该执行 telnet 测试。 它提供了有值(value)的信息。这是一种众所周知的测试方法 连接性,它应该成为任何 IT 人员工具箱的一部分,无论是 恕我直言,您是开发人员或系统管理员。 (Windows人们通常这样做 不知道“telnet 测试”主要是因为微软已经决定 那telnet client should no longer be installed by default on Windows )

关于java - 我不知道为什么会出现这种情况? "java.nio.channels.UnresolvedAddressException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39029843/

相关文章:

java - Tomcat 连接器架构、线程池和异步 servlet

java - JAX-RS 自动将 List<Object> 编码为 JSON

Firebase 云功能异常缓慢

node.js - Firebase + gcloud 存储 + Nodejs。访问被拒绝错误

node.js - 如何优化 firebase 函数的响应速度

java - 不能在 JDBC PreparedStatement 中使用 LIKE 查询?

java - 如何在 Netty 中的 ssl 握手之前优雅地关闭 channel ?

java - Netty 套接字生成 Close_wait 状态

java - Java 项目中使用 GRPC 和 GlassFish 的 Netty 问题

java - 模拟对象单元测试遇到问题