如何检查服务器是否支持xmpp协议?
答
大多数XMPP服务器应支持这些DNS SRV记录中的至少一个:
-
_xmpp-server._tcp。
example.com
-
_xmpp-client._tcp。
example.com
有些服务器可能没有发布这些记录,但大多数人不想与外界交谈。举个例子,你可以用“挖”在命令行上,查看域,像这样:
% 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.
“+短”摆脱了大量的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缓存结果。
哇,谢谢你的回复:) 我忘了提及我正在寻找一种自动方式。 此检查将定期在我的应用程序中执行。 – 2009-07-07 16:28:55