pyxmpp2 连接 openfire 无法解析 NXDOMAIN
我在我的Ubuntu机器上安装了pyxmpp2,链接是https://github.com/Jajcus/pyxmpp2
。同时,我也安装了Openfire 3.8.1。我想用pyxmpp2连接到同一台机器上的Openfire服务器。
在我的Openfire控制面板中,进入服务器管理 -> 服务器信息,看到服务器属性里的服务器名称是mymachine,而环境部分的主机名称是MyMachine。
我尝试了以下代码:
import logging
from pyxmpp2.jid import JID
from pyxmpp2.client import Client
logging.basicConfig()
client = Client(JID("admin@mymachine"),[])
client.connect()
然后收到了以下消息:
警告: pyxmpp2.resolver: 无法解析'_xmpp-client._tcp.mymachine': NXDOMAIN
我是不是漏掉了什么配置?
2 个回答
0
可能是正在使用ipv6,你可以强制使用ipv4,方法是设置 u"ipv4": True
,并指定服务器 u"server": "chat.facebook.com"
handler = MyHandler(JID(target_jid), message)
settings = XMPPSettings({
u"ipv4": True,
u"server": "chat.facebook.com",
u"password": your_password,
u"starttls": True,
u"tls_verify_peer": False,
})
client = Client(JID(your_jid), [handler], settings)
client.connect()
client.run()
完整的代码可以在 pyxmpp2
的示例文件夹里找到,文件名是 send_message_client.py
1
看起来你的域名没有DNS SRV记录,所以pyxmpp2无法找到它们。你可以查看一下这个链接,了解如何创建这些记录。
简单来说,DNS SRV记录的格式是这样的:
_服务名._协议名.域名 TTL 类别 SRV 优先级 权重 端口 目标
这可能看起来像下面这个例子:
_xmpp-client._tcp.example.net. 86400 IN SRV 5 0 5222 example.net.
也许pyxmpp2还提供了一种直接指定用于XMPP服务的主机的方法。这样就可以避免进行DNS SRV查找。