python没有连接到本地XMPP服务器
Posted
技术标签:
【中文标题】python没有连接到本地XMPP服务器【英文标题】:python does not connect to local XMPP server 【发布时间】:2012-09-11 10:50:28 【问题描述】:我正在尝试通过下面的代码连接我的本地 XMPP 服务器
import xmpp
client = xmpp.Client('localhost',debug=[])
client.connect(server=('localhost',5222))
但我总是收到这条消息:
查找 _xmpp-client._tcp.localhost 时出错
我已经检查了端口 5222 是否已经打开(通过使用 telnet)。 (我不得不提到本地主机上的防火墙已关闭) 现在我应该在这段代码中添加什么以使其正常工作?
【问题讨论】:
我以前用过linkSleekXMPP 来做这种事情,如果你不能让它工作,可能值得一看,SleekXMPP 有很好的工作示例记录。 你确定这不仅仅是一个警告吗?您可能实际上已连接。 因为它不工作 【参考方案1】:此消息(警告,而不是 xinox 的回答中指出的错误)表明 DNS SRV 记录查找失败。 DNS SRV 记录用于查找与某个域相关联的服务(例如,localhost
在这种情况下,因此根本不是一个域,这就是查找失败的原因),但它们将它们的责任委托给一个服务器其他地方。
例如,如果我有一个位于example.net
的服务器,我的 Jabber ID (JID) 为:user@example.net
,但我的 XMPP 服务器位于 chat.example.net
,我可以在 example.net
上构造一条 SRV 记录以指向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)
【讨论】:
请注意,SRV 不是 XMPP 工作所必需的(例如,如果您的服务器和帐户位于同一域中),但无论如何都会产生此警告。 是的,这就是为什么它是警告而不是错误的原因(尽管我个人认为警告是浪费时间,根本不应该记录,因为它们本质上表明“没有出错,一切都是好”)【参考方案2】:使用这个。
client = xmpp.Client('127.0.0.1',debug=[])
client.connect(server=('127.0.0.1',5222))
或您的 IP 192.X.X.X
【讨论】:
以上是关于python没有连接到本地XMPP服务器的主要内容,如果未能解决你的问题,请参考以下文章