接上一篇,做个发信息的客户端,使用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);
}
用上一篇的服务端做测试发送消息: