サーバーが xmpp プロトコルをサポートしているかどうかを確認するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1093317

  •  11-09-2019
  •  | 
  •  

質問

サーバーがxmppプロトコルをサポートしているかどうかを確認する方法を探しています。xmpp-server はこのドメインで実行されています。

おそらく特別なDNSチェックかそのようなものでしょうか?

役に立ちましたか?

解決

ほとんどの XMPP サーバーは、次の DNS SRV レコードの少なくとも 1 つをサポートする必要があります。

  • _xmpp-server._tcp.example.com
  • _xmpp-client._tcp.example.com

一部のサーバーではこれらのレコードが公開されていない可能性がありますが、それらのサーバーのほとんどは外部との通信を望んでいません。たとえば、次のようにコマンド ラインで「dig」を使用してドメインを確認できます。

% dig +short -t SRV _xmpp-server._tcp.gmail.com.
20 0 5269 xmpp-server2.l.google.com.
20 0 5269 xmpp-server3.l.google.com.
20 0 5269 xmpp-server4.l.google.com.
5 0 5269 xmpp-server.l.google.com.
20 0 5269 xmpp-server1.l.google.com.

「+short」は多くの DNS 詳細を削除し、「-t SRV」は SRV レコードが必要であることを示し、最後のドットはローカル ドメイン名の設定を無視することを示します。

( @user188719への応答の追加)SRVレコードが見つからない場合は、元のドメイン名を使用してみて、クライアント接続用のポート5222またはサーバー接続用の5269を想定できます。

接続するホスト名とポート番号を取得したら、次を使用できます。 telnet hostname port そこでリッスンしているプロセスがあるかどうかを確認します。ただし、そのホスト/ポートの XMPP サーバーであるかどうかを実際に検出するには、XMPP ストリームの先頭を送信します。 nc または netcat これに便利なメカニズムを提供します。サーバー間のチェックの例:

% echo "<stream:stream to='gmail.com' version='1.0' xmlns='jabber:server' xmlns:stream='http://etherx.jabber.org/streams' xmlns:db='jabber:server:dialback'>" | nc xmpp-server.l.google.com 5269
<stream:stream id="0A44AFB86521393A" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:server" xmlns:db="jabber:server:dialback">

他のヒント

ジョーの説明に続いて、私は個人的にSRVレコードを確認するだろうとバック速い(短いタイムアウト)にフォール結果をキャッシュその後ポート5269.のチェックを接続します。

あなたはIMtrendsを試すことができます: http://www.process-one.net/en / imtrends /

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top