无法使用任何 QWebSocket 客户端基本示例
Posted
技术标签:
【中文标题】无法使用任何 QWebSocket 客户端基本示例【英文标题】:Unable use any QWebSocket client basic example 【发布时间】:2014-09-04 13:50:01 【问题描述】:我无法使用此处列出的任何 QWebSockets 客户端示例: http://qt-project.org/doc/qt-5/qtwebsockets-examples.html 应用程序尝试打开 localhost url,套接字卡在 QAbstractSocket::ConnectingState 和
qDebug()
返回 QAbstractSocket::UnknownSocketError。当然,永远不会发出“已连接”信号。 我在 osx lion 中有 qt 5.3。我有 OpenSSL 1.0.1i 和
QSslSocket::supportsSsl() ;
返回真。
我真的没有想法,所以如果你有任何不适,非常感谢。
提前致谢。
【问题讨论】:
【参考方案1】:首先,在这种情况下,我认为 ssl 不是问题。
我刚刚运行了示例,它运行良好。这意味着可能存在以下常见问题之一(或者可能存在我不知道的其他问题)。
本地端口号 1234 正被其他进程使用。这意味着,尝试编辑EchoClient client(QUrl(QStringLiteral("ws://localhost:1234")));
并将1234
替换为8888
或9001
等数字应该可以解决问题。请注意,在这种情况下,您必须更改客户端和服务器程序中的端口。 (如果您不明白我在说什么,请阅读下一点以完全理解。)
在相应的服务器程序运行时运行客户端程序。例如,当您运行echoclient
时,您应该保持echoserver
运行。如果您使用的是 windows 或 linux,您可以通过打开两个 Qt Creator 进程并先运行 echoserver
然后运行 echoclient
来完成此操作。如果您在 Mac 中,则无法创建 Qt Creator 的两个实例(至少在 Yosemite 中,我不了解 osx lion)。您必须运行echoserver
(并且不要关闭控制台),然后打开echoclient
项目并将echoclient 设置为活动项目并运行。
(虽然不太可能) 如果您正在打开一个项目,从网站复制 cpp 文件并将其粘贴到您的项目中,然后编译(而不是从您的示例选项卡中下载它) Qt Creator),那么您可能缺少 .pro 文件的配置。只需在项目的.pro
文件中添加websockets
和QT += core
。
如果不是这些情况,那么您可以告诉我,在这种情况下您也可以尝试在Qt forum 中发帖。
【讨论】:
【参考方案2】:这是一个适合我的代码示例:
CSocketClient : public QWebSocket
Q_OBJECT
public:
CSocketClient();
protected slots:
void SL_Connected();
void SL_Disconnected();
;
CSocketClient::CSocketClient() : QWebSocket("MyApplication")
connect(this, &QWebSocket::connected, this, &OSocketWebGenogramClient::SL_Connected);
connect(this, &QWebSocket::disconnected, this, &CSocketClient::SL_Disconnected);
open(QUrl("ws://localhost:45002"));
void
CSocketClient::SL_Connected()
qDebug() << "Connected to server on port" << localPort();
void
CSocketClient::SL_Disconnected()
【讨论】:
以上是关于无法使用任何 QWebSocket 客户端基本示例的主要内容,如果未能解决你的问题,请参考以下文章