2012-09-11 68 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

是的,这就是为什么它是一个警告,而不是一个错误(虽然我个人认为警告是浪费时间,不应该记录,因为它们固有地表明“没有错,一切都很好”) –