Qt网络编程:QWebSocket使用示例

上一篇,做个发信息的客户端,使用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 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值