这个问题有点棘手,我真的不认为我会找到答案,但我会尝试。
我正在使用gloox编写一个C++程序来进行XMPP传输。我的问题是,"onConnect()“处理程序从来没有被调用过,这个问题只发生在我的计算机上(Linux Mint13Mate 32bits)。当我们使用jabber.org服务器时,这不是问题(实际上,我甚至不知道它没有被调用...)但是当我们安装LAN ejabberd服务器时,问题就开始出现了。
使用jabber.org服务器,即使没有调用"onConnect“,应用程序也能够很好地发送/接收消息。但不是在ejabberd上。一开始我以为是证书之类的问题,但后来我们在我们的其他Linux机器(Ubuntu12.04 x64,Arch x64和Debian6.032(服务器在这台机器上运行))上试了试,它在任何一台电脑上都能正常工作。此外,使用Python-Twisted的姊妹应用程序可以在有问题的计算机上很好地连接。
验证函数onTLSConnect()每次都会被调用,并返回true。在有问题的计算机上,当使用我们的ejabberd服务器时,在那之后没有建立连接,套接字在大约25秒后自动关闭它(并且调用onDisconnect() ...)
所以,我的问题是:有没有互联网设置(比如防火墙)?这阻止了Gloox终止连接。或者,是否有人遇到过类似的问题?谢谢!
编辑:我在我的笔记本电脑上制作了一个32位的Mint 13 MATE虚拟机,同样的问题也出现了。我现在可以得出结论,它是薄荷中的某个地方的bug。
EDIT2:在Mint64位上运行良好...我在Mint64位的错误页面上打开了一个标签
发布于 2013-08-08 10:57:13
我上周遇到了这个问题,看起来像是gloox的bug。它发生在32位linux上。查看此https://bugs.launchpad.net/linuxmint/+bug/1071416
在fact.you中,你在服务器上是“在线”的,但是你的“存在”状态是未知的。您可以简单地将“聊天”状态发送到服务器以继续您的工作。
像这样
#ifdef GLOOX_ON_CONNECT_BUG_PATCH
Poco::Thread::sleep(3000);//休息3秒,然后连接成功,哎,该死的bug
this->is_connected = true;
client->setPresence(Presence::Chat, 0);
#endifhttps://stackoverflow.com/questions/13073044
复制相似问题