我正在尝试通过下面的代码连接我的本地XMPP服务器
import xmpp
client = xmpp.Client('localhost',debug=[])
client.connect(server=('localhost',5222))
但我总是收到这条消息:
查找_xmpp-client._tcp.localhost
时发生错误
我已经检查过端口5222已经打开(使用telnet)。 (我必须提到localhost上的防火墙已关闭) 现在我应该在这段代码中添加什么才能使其正常工作?
答案 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服务器,它工作正常。