Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
qt websocket客户端握手问题_Qt_Websocket_Handshake - Fatal编程技术网

qt websocket客户端握手问题

qt websocket客户端握手问题,qt,websocket,handshake,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, SIG

我正在尝试使用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")));
当使用Wireshark进行检查时,我们观察到从客户端到服务器和服务器到客户端的HTTP消息都被发送和接收。之后,我们看不到对web套接字协议的任何升级

从不调用回调函数stateChanged、error或textFrameReceived,且状态保持为Connection,从不连接。我使用Qt5.7和5.8进行了尝试。编译器是mingw5.3.0。操作系统是Windows 10 64位


提前感谢您的帮助,

connect
建议您继承了
QWebSocket
,这是错误的。另外,您正在连接到echo服务器,并且没有发送任何内容。我尝试了封装和继承。结果是一样的。我发现了一些有趣的东西。我有一个类,它调用这个连接器类。我将调用连接器类移动到main.cpp并直接调用它。然后它连接到web套接字服务器。当我从任何其他对象调用连接器类时,它无法连接。另一个类扩展了QObject。原因可能是什么?您是否检查过使用Qtimer打开websocket(例如,100毫秒延迟),因此不要在构造函数上调用打开的websocket。
Trying to connect to the Echo Server
New socket status:  QAbstractSocket::ConnectingState