2009-07-07 118 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緩存結果。

相關問題