Dns 如何检查服务器是否支持xmpp协议?

Dns 如何检查服务器是否支持xmpp协议?,dns,xmpp,srv,Dns,Xmpp,Srv,我正在寻找一种方法来检查服务器是否支持xmpp协议,即xmpp服务器正在这个域上运行 可能是特殊的DNS检查或类似的东西?您可以尝试IMtrends:大多数XMPP服务器应至少支持以下DNS SRV记录之一: \u xmpp-server.\u tcpexample.com \u xmpp-client.\u tcpexample.com 有些服务器可能没有发布这些记录,但大多数服务器都不想与外界交流。例如,您可以在命令行上使用“dig”检查域,如下所示: % dig +short -t S

我正在寻找一种方法来检查服务器是否支持xmpp协议,即xmpp服务器正在这个域上运行


可能是特殊的DNS检查或类似的东西?

您可以尝试IMtrends:

大多数XMPP服务器应至少支持以下DNS SRV记录之一:

  • \u xmpp-server.\u tcp
    example.com
  • \u xmpp-client.\u 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细节,“-tsrv”表示我们需要SRV记录,最后的dot表示忽略您的本地域名设置

(为响应@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">
%echo”“| nc xmpp-server.l.google.com 5269

按照Joe的解释,我个人会检查SRV记录,然后在端口5269上进行快速(短超时)连接检查。然后缓存结果。

哇,谢谢你的快速回复:)我忘了提到我正在寻找一种自动方式。此检查将定期在我的应用程序中执行。