Я ищу способ проверить, поддерживает ли сервер протокол xmpp, т. Е. В этом домене работает xmpp-сервер.Как проверить, поддерживает ли сервер протокол xmpp?
Возможно, специальная проверка DNS или что-то в этом роде?
Я ищу способ проверить, поддерживает ли сервер протокол xmpp, т. Е. В этом домене работает xmpp-сервер.Как проверить, поддерживает ли сервер протокол xmpp?
Возможно, специальная проверка DNS или что-то в этом роде?
Большинство XMPP-серверы должны поддерживать по крайней мере один из этих DNS SRV записей:
example.com
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">
Вы можете попробовать IMtrends: http://www.process-one.net/en/imtrends/
После объяснения Джо, я бы лично проверить SRV записи и возвращаться к быстрой (короткий тайм-аут) подключения проверьте порт 5269. Затем кэшировать результат.
Вау, спасибо за ваш очень быстрый ответ :) Я забыл упомянуть, что ищу автоматический путь. Эта проверка будет регулярно выполняться в моем приложении. –