2009-07-07 155 views

回答

6

大多数XMPP服务器应支持这些DNS SRV记录中的至少一个:

  • _xmpp-server._tcpexample.com
  • _xmpp-client._tcpexample.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流的开始。 ncnetcat为此提供了便利的机制。例如,对于服务器到服务器的检查:

% 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"> 
0

您可以尝试IMtrends:http://www.process-one.net/en/imtrends/

+0

哇,谢谢你的回复:) 我忘了提及我正在寻找一种自动方式。 此检查将定期在我的应用程序中执行。 – 2009-07-07 16:28:55

2

继乔的解释,我个人支票的SRV记录和回落到一个快速(短期超时)连接检查端口5269缓存结果。

相关问题