无法使用任何QWebSocket客户端基本示例

Unable use any QWebSocket client basic example

本文关键字:客户端 QWebSocket 任何      更新时间:2023-10-16

我无法使用此处列出的任何QWebSockets客户端示例:http://qt-project.org/doc/qt-5/qtwebsockets-examples.html应用程序试图打开localhost url,套接字被卡在QAbstractSocket::ConnectingState和中

qDebug()<lt;m_webSocket.error();

返回QAbstractSocket::UnknownSocketError。当然,"连接"信号永远不会发出。我的osx狮子有qt 5.3。我有OpenSSL 1.0.1i和

QSslSocket::supportsSl();

返回true。

我真的没有主意,所以如果你生病了,请不胜感激。

提前Thx。

首先,我不认为ssl是这种情况下的问题。

我只是举了几个例子,效果很好。这意味着可能存在以下常见问题之一(或者可能还有其他我不知道的问题)。

  • 本地端口号1234正被其他进程使用。也就是说,尝试编辑EchoClient client(QUrl(QStringLiteral("ws://localhost:1234")));并用88889001等数字替换1234应该可以解决问题。注意,在这种情况下,您必须更改客户端和服务器程序中的端口。(如果你不明白我在说什么,请阅读下一点以完全理解。)
  • 在运行相应的服务器程序的同时运行客户端程序。例如,当您运行echoclient时,您应该保持echoserver的运行。如果您在windows或linux中,您可以通过打开两个Qt Creator进程并首先运行echoserver,然后运行echoclient来实现这一点。如果你在Mac,你不能创建两个Qt Creator实例(至少在约塞米蒂,我不知道osx lion)。您必须运行echoserver(不要关闭控制台),然后打开echoclient项目并将echoclient设置为活动项目并运行。

  • (虽然不太可能)如果您正在打开一个项目,从网站复制cpp文件并将其粘贴到您的项目中,然后进行编译(而不是从Qt Creator的"示例"选项卡下载),那么您可能缺少.pro文件的配置。只需在项目的.pro文件中添加websocketsQT += core即可。

如果不是这些情况,那么你可以告诉我,在这种情况下,你也可以尝试在Qt论坛上发帖。

下面是一个为我工作的代码示例:

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()
    {
    }