2009-07-07 3 views

ответ

6

Большинство 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"> 
0

Вы можете попробовать IMtrends: http://www.process-one.net/en/imtrends/

+0

Вау, спасибо за ваш очень быстрый ответ :) Я забыл упомянуть, что ищу автоматический путь. Эта проверка будет регулярно выполняться в моем приложении. –

2

После объяснения Джо, я бы лично проверить SRV записи и возвращаться к быстрой (короткий тайм-аут) подключения проверьте порт 5269. Затем кэшировать результат.

Смежные вопросы