0

这个问题有点棘手,我真的不认为我会找到答案,但无论如何我都会尝试。

我正在编写一个使用 gloox 进行 XMPP 传输的 C++ 程序。我的问题(仅在我的计算机上发生)(Linux Mint 13 MATE 32bits)是永远不会调用“onConnect()”处理程序。当我们使用 jabber.org 服务器时这不是问题(实际上,我什至不知道它没有被调用......)但是当我们安装 LAN ejabberd 服务器时问题开始出现。

使用 jabber.org 服务器,即使没有调用“onConnect”,应用程序也能够正常发送/接收消息。但不是在 ejabberd 上。起初我认为这是证书或其他东西的问题,但后来我们尝试了我们的其他 Linux 机器(Ubuntu 12.04 x64、Arch x64 和 Debian 6.0 32(服务器在这台机器上运行)),它在任何机器上都可以正常工作那些电脑。另外,使用 Python-Twisted 的姊妹应用程序可以在有问题的计算机上正常连接。

每次都会调用验证函数 onTLSConnect() 并返回 true。在有问题的计算机上,当使用我们的 ejabberd 服务器时,连接未建立,并且套接字在大约 25 秒后自行关闭(并且调用了 onDisconnect()...)

所以,我的问题是:是否存在阻止 Gloox 终止连接的互联网设置(如防火墙?)。或者有没有人遇到过类似的问题?谢谢!

编辑:我在我的笔记本电脑上制作了一个 Mint 13 MATE 32bits 的 VM,并且出现了同样的问题。我现在可以得出结论,这是薄荷中某个地方的错误。

EDIT2:在 Mint 64 位上运行良好....我在 Mint 的错误页面上打开了一张票

4

1 回答 1

1

我上周遇到了这个问题,这似乎是一个 gloox 的错误。它发生在 32 位 linux 上。看到这个https://bugs.launchpad.net/linuxmint/+bug/1071416

事实上,您在服务器上“在线”,但您的“在线”状态是未知的。您可以简单地向服务器发送“聊天”状态以继续您的工作。

像这样

#ifdef GLOOX_ON_CONNECT_BUG_PATCH
    Poco::Thread::sleep(3000);//休息3秒,然后连接成功,哎,该死的bug
    this->is_connected = true;
    client->setPresence(Presence::Chat, 0);
#endif
于 2013-08-08T02:57:12.617 回答