python不连接到本地XMPP服务器

时间:2012-09-11 10:50:28

标签: python xmpp ejabberd

我正在尝试通过下面的代码连接我的本地XMPP服务器

import xmpp
client = xmpp.Client('localhost',debug=[])
client.connect(server=('localhost',5222))

但我总是收到这条消息:

  

查找_xmpp-client._tcp.localhost

时发生错误

我已经检查过端口5222已经打开(使用telnet)。 (我必须提到localhost上的防火墙已关闭) 现在我应该在这段代码中添加什么才能使其正常工作?

3 个答案:

答案 0 :(得分:4)

此消息(警告,而不是xinox的答案中指出的错误)表示DNS SRV记录查找失败。 DNS SRV记录用于查找与某个域相关联的服务(例如,在这种情况下为localhost,因此根本不是一个域,这就是查找失败的原因),但是将其责任委托给服务器生活在其他地方。

例如,如果我有example.net的服务器,那么我的Jabber ID(JID):user@example.net,但我的XMPP服务器住在chat.example.net我可以构建一个SRV记录example.net指向chat.example.net。还有其他方式来委派责任,但这是首选方法。 XMPP使用的SRV记录在RFC 6120 §3.2.1中定义。

要真正消除此错误,您可以使用use_srv kwarg,作为您的初步示例:

import xmpp
client = xmpp.Client('localhost',debug=[])
client.connect(server=('localhost',5222), use_srv=False)

答案 1 :(得分:0)

使用它。

client = xmpp.Client('127.0.0.1',debug=[])
client.connect(server=('127.0.0.1',5222))

或您的IP 192.X.X.X

答案 2 :(得分:-1)

我想出来了,只记得这是一个警告而不仅仅是一个错误。 python正确连接到openfire XMPP服务器,它工作正常。