qt websocket客户端握手问题

时间:2017-03-21 21:54:08

标签: qt websocket handshake

我正在尝试使用Qt在Windows上连接echo Web套接字服务器。我可以使用java或javascript连接到Web套接字服务器,但Qt不起作用。它陷入握手状态。您可以在下面找到连接到Web套接字服务器的代码段:

qDebug() << "Trying to connect to the Echo Server";

connect(this, SIGNAL(connected()), this, SLOT(onConnected()));
connect(this, SIGNAL(disconnected()), this, SLOT(onClosed()));
connect(this, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(onStateChanged(QAbstractSocket::SocketState)));
connect(this, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(onError(QAbstractSocket::SocketError)));
connect(this, SIGNAL(textFrameReceived(QString,bool)), this, SLOT(onTextFrameReceived(QString,bool)));

this->ignoreSslErrors();

this->open((QUrl("ws://echo.websocket.org")));

运行此代码时,控制台显示以下内容:

Trying to connect to the Echo Server
New socket status:  QAbstractSocket::ConnectingState

当使用Wireshark检查时,我们发现从客户端到服务器和服务器到客户端的HTTP消息都被发送和接收。之后,我们看不到任何升级到Web套接字协议。

永远不会调用回调函数stateChanged,error或textFrameReceived,状态将保持为Connecting,永远​​不会连接。我尝试使用Qt 5.7和5.8。编译器是MinGW 5.3.0。操作系统是Windows 10 64位。

提前感谢您的帮助,

0 个答案:

没有答案