2012-09-11 70 views
1

我試圖通過下面來蟒蛇沒有連接到本地XMPP服務器

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

代碼到我的本地XMPP服務器連接,但我總是得到這樣的信息:

時發生錯誤,查找_xmpp-client._tcp.localhost

我已檢查端口5222已被打開(通過使用telnet)。 (我不得不提的是在本地主機的防火牆是關閉的) 現在我應該怎麼添加到該代碼,使其工作?

+0

我用[鏈接](https://github.com/fritzy/SleekXMPP)SleekXMPP爲這種事情可能值得一看,如果你不能得到這個工作,SleekXMPP有很好的文件記錄與工作的例子。 – Ctrlspc

+0

你確定這不僅僅是一個警告?你可能實際上被連接了。 –

+0

,因爲它沒有按照方式工作 –

回答

-1

我想通了這一點,只記得這是一個警告,不只是一個錯誤。 python正確連接到openfire XMPP服務器並且工作正常。

0

使用本。

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

或您的IP 192.X.X.X

4

此消息(警告,還不如在xinox的答覆中指出的錯誤)的指示DNS SRV記錄查找失敗。 DNS SRV記錄被用於查找與某個域相關的服務(如:localhost在這種情況下,所以不是一個真正的域在所有這就是爲什麼查找失敗),但代表他們有責任的生活在別處的服務器。

舉例來說,如果我在example.net有一個服務器,使我的Jabber ID(JID):[email protected],但我的XMPP服務器住在chat.example.net我可以構建在example.net SRV記錄指向chat.example.net。還有其他的方式來委託責任,但這是首選。在RFC 6120 §3.2.1中定義了XMPP使用SRV記錄。

要真正擺脫這種錯誤的,你可以使用use_srv kwarg,使您最初的例子:

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

請注意,SRV對XMPP不是必需的(例如,如果您的服務器和帳戶位於同一個域中),但是仍會產生此警告。 – Joost

+0

是的,這就是爲什麼它是一個警告,而不是一個錯誤(雖然我個人認爲警告是浪費時間,不應該記錄,因爲它們固有地表明「沒有錯,一切都很好」) –