1. ホーム
  2. java

[解決済み] なぜこのようなことが起こるのでしょうか?"java.nio.channels.UnresolvedAddressException "が発生しました。

2022-02-09 16:27:17

質問

Nettyを使って、FCMサーバーにメッセージを送信する機能を持つプログラムを作りました。

Windows7でテストしました。

はうまく動作します。

が、solarisはこれが動かない。

ソラリスで例外コードが発生しました。

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

の後にこの例外エラーが発生しました。

<ブロッククオート

"[ClientHandler.channelOpen]"。

を実行し

"[ClientHandler.channelClosed]"。

ということで、Immediately "[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には ソラリスネームサービスデーモン 名前情報をキャッシュするものです。他のOSでも似たようなコンセプトがあります。 Solarisの関連するシステムコールはすべてこのデーモンに名前情報を要求します。 の情報を提供しますが nslookup ツールはこれを回避して DNSサーバーから直接 このため nslookup しかし、一般的な名前検索はうまくいきません。結論から言うと nslookup は、時には、あなたがしたいテストではありません。使用方法 getent コマンドのように、代わりに getent hosts fcm-xmpp.googleapis.com .

  3. Andrew Henleyのコメントは的を得ている。を実行する必要があります。 telnet をテストしてください。 貴重な情報を与えてくれます。これは、テスト方法としてよく知られている 接続性を確保するために、IT担当者のツールボックスの一部となるべきものです。 開発者であろうとシステム管理者であろうと、私はそう思います。(Windowsの人は通常 telnetテスト」を知らないのは、主にマイクロソフトが その telnetクライアントは、もはやデフォルトでインストールされるべきではありません。 ウィンドウズ )