在pro文件里面添加websockets模块
QT += websockets
在头文件里面添加include声明
#include <QtWebSockets>
.h文件实现
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_btnListen_clicked();
void newConnection();
void recvData(QString data);
private:
Ui::Widget *ui;
QWebSocket *webclient;
QWebSocketServer *webserver;
};
构造函数里面关联信号槽
webserver = new QWebSocketServer("webserver", QWebSocketServer::NonSecureMode, this);
connect(webserver, SIGNAL(newConnection()), this, SLOT(newConnection()));
.cpp文件实现
void Widget::on_btnListen_clicked()
{
QString ip = ui->txtIP->text();
QString port = ui->txtPort->text();
if(webserver->listen(QHostAddress(ip), port.toInt())){
ui->textEdit->append("webserver listen success");
ui->textEdit->append(QString("listen url:%1").arg(webserver->serverUrl().toString()));
}else{
ui->textEdit->append("webserver listen failed");
}
}
void Widget::newConnection()
{
while(webserver->hasPendingConnections())
{
webclient = webserver->nextPendingConnection();
disconnect(webclient, SIGNAL(textMessageReceived(QString)), this, SLOT(recvData(QString)));
connect(webclient, SIGNAL(textMessageReceived(QString)), this, SLOT(recvData(QString)));
ui->textEdit->append(QString("new client:%1[%2]").arg(webclient->peerAddress().toString()).arg(webclient->peerPort()));
}
}
void Widget::recvData(QString data)
{
ui->textEdit->append(data);
webclient->sendTextMessage("recv ok");
}
源码下载:https://download.csdn.net/download/cqchengdan/11243194