서버가 XMPP 프로토콜을 지원하는지 확인하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1093317

  •  11-09-2019
  •  | 
  •  

문제

서버가 XMPP 프로토콜을 지원하는지 확인하는 방법을 찾고 있습니다. 즉,이 도메인에서 XMPP-Server가 실행 중입니다.

특별한 DNS 수표 나 그런 것일까 요?

도움이 되었습니까?

해결책

대부분의 XMPP 서버는 이러한 DNS SRV 레코드 중 하나 이상을 지원해야합니다.

  • _xmpp-server._tcp.example.com
  • _xmpp-client._tcp.example.com

일부 서버에는 이러한 레코드가 게시되지 않았지만 대부분의 서버는 외부 세계와 대화하고 싶지 않을 것입니다. 예를 들어, 명령 줄에서 "Dig"를 사용하여 다음과 같은 도메인을 확인할 수 있습니다.

% 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.

"+short"는 많은 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">

다른 팁

Joe의 설명에 따라 개인적으로 SRV 레코드를 확인하고 포트 5269의 빠른 (짧은 시간 초과) 연결 확인으로 돌아갑니다. 그런 다음 결과를 캐시합니다.

당신은 imtrends를 시도 할 수 있습니다 : http://www.process-one.net/en/imtrends/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top