2013-03-22 76 views
2

我將pyxmpp2 https://github.com/Jajcus/pyxmpp2安裝到了我的Ubuntu機器上。我也安裝了Openfire 3.8.1。我想在同一臺機器上使用pyxmpp2連接到我的Openfire服務器。pyxmpp2連接到openfire無法解析NXDOMAIN

在我的Openfire控制面板中的服務器 - >服務器管理器 - >服務器信息中,面板的服務器屬性中顯示的服務器名稱爲mymachine,環境部分顯示的主機名爲MyMachine。

我嘗試下面的代碼:

import logging 
from pyxmpp2.jid import JID 
from pyxmpp2.client import Client 
logging.basicConfig() 
client = Client(JID("[email protected]"),[]) 
client.connect() 

,並得到了以下消息:

警告:pyxmpp2.resolver:無法解析 '_xmpp-client._tcp.mymachine':NXDOMAIN

我錯過配置的東西嗎?

回答

1

看起來你的域沒有DNS SRV記錄,因此pyxmpp2無法解析它們。看看http://wiki.xmpp.org/web/SRV_Records如何創建它們。

基本上DNS SRV記錄的形式

_service._proto.name TTL類SRV優先級權重端口目標

這可能看起來像這個例子

_xmpp-client._tcp.example.net. 86400 IN SRV 5 0 5222 example.net. 

也許pyxmpp2還提供了一種直接指定用於XMPP服務的主機的方法。這將避免DNS SRV查找。

+0

DNS SRV記錄不被需要的服務器的IPv4 XMPP協議,但受到鼓勵。您的JID「admin @ mymachine」(so,mymachine)中的服務器部分必須解析python庫。嘗試「nslookup mymachine」或「挖mymachine」進行故障排除。使用您的代碼中的完全相同的服務器名稱。 – 2013-03-23 18:25:56

+0

謝謝。我已閱讀鏈接'http:// wiki.xmpp.org/web/SRV_Records',但我不知道如何創建SRV記錄。你能給我更詳細的指導嗎?我需要安裝「綁定」嗎? – Greenhand 2013-03-26 07:23:08

0

它可以使用IPv6,您可以強制使用u"ipv4": True和specifing 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 examples文件夾send_message_client.py