接上一篇,做個發資訊的客戶端,使用QWebSocket與QWebSocketServer通信
界面如下:
代碼:
#include "widget.h"
#include "ui_widget.h"
#include <QWebSocket>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
WebSocket = nullptr;
}
Widget::~Widget()
{
delete ui;
if(WebSocket)
WebSocket->close();
}
void Widget::on_pushButton_clicked()
{
if(!WebSocket)
{
if(ui->lineEdit_2->text().trimmed().isEmpty())
return;
WebSocket = new QWebSocket(ui->lineEdit_2->text().trimmed(),QWebSocketProtocol::VersionLatest,this);
connect(WebSocket, &QWebSocket::connected,this,[this]
{
ui->textEdit->append("已連接上" + WebSocket->peerAddress().toString());
b_Connected = true;
ui->pushButton->setText("斷開");
});
connect(WebSocket, &QWebSocket::disconnected,this,[this]
{
ui->textEdit->append("與" + WebSocket->peerAddress().toString() + "斷開連接");
b_Connected = false;
ui->pushButton->setText("連接");
});
connect(WebSocket, SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(onError(QAbstractSocket::SocketError)));
connect(WebSocket, &QWebSocket::textMessageReceived,this, &Widget::ReceivedMsg);
}
if(!b_Connected)
WebSocket->open(QUrl(ui->lineEdit->text().trimmed()));
else
{
WebSocket->close();
WebSocket->deleteLater();
WebSocket = nullptr;
}
}
void Widget::ReceivedMsg(const QString &message)
{
ui->textEdit->append("收到訊息:" + message);
}
void Widget::onError(QAbstractSocket::SocketError error)
{
ui->textEdit->append(WebSocket->origin() + "出錯" + WebSocket->errorString());
}
void Widget::on_pushButton_2_clicked()
{
if(!WebSocket)
return;
if(!WebSocket->isValid())
return;
QString text = ui->textEdit_2->toPlainText().trimmed();
if(text.isEmpty())
return;
WebSocket->sendTextMessage(text);
ui->textEdit->append("發送訊息:" + text);
}
用上一篇的服務端做測驗發送訊息:

代碼:https://download.csdn.net/download/kenfan1647/12907117
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/149157.html
標籤:python
