首页 > 其他分享 >Qt开发websocket服务

Qt开发websocket服务

时间:2024-05-09 10:00:20浏览次数:15  
标签:Widget ui websocket Qt void 开发 ws const include

 

Qt自带的有网络编程模块,需要再pro文件加上 websockets

# pro 文件
QT       += core gui websockets

 

.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QWebSocketServer>
#include <QWebSocket>
#include <QDebug>


QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

signals:
    void signale_sendToClient(const QByteArray &data);

public slots:
    void sendToClient(const QByteArray &data);
    void onopen();
    void onclose();
    void onMessage(const QString &message);


private:
    Ui::Widget *ui;

    QWebSocketServer *ws = nullptr;
    QList<QWebSocket *> m_clients;
};
#endif // WIDGET_H

 

 

.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    ws = new QWebSocketServer("server", QWebSocketServer::NonSecureMode, this);
    ws->listen(QHostAddress::Any, 36668);
    connect(ws, &QWebSocketServer::newConnection, this, &Widget::onopen);

    showMinimized();
}

Widget::~Widget()
{
    if(ws)
    {
        ws->close();
        ws->deleteLater();
    }

    delete ui;
}

void Widget::sendToClient(const QByteArray &data)
{
    for (QWebSocket *p_client: qAsConst(m_clients))
    {
        p_client->sendTextMessage(QString("send data to client"));
    }
}

void Widget::onopen()
{
    auto p_socket = ws->nextPendingConnection();
    qDebug() << "websocket onopen...";

    connect(p_socket, &QWebSocket::textMessageReceived, this, &Widget::onMessage);
    connect(p_socket, &QWebSocket::disconnected, this, &Widget::onclose);

    m_clients << p_socket;
}

void Widget::onclose()
{
    QWebSocket *p_client = qobject_cast<QWebSocket*>(sender());
    qDebug() << "websocket onclose...";
    if(p_client)
    {
        m_clients.removeAll(p_client);
        p_client->deleteLater();
    }
}

void Widget::onMessage(const QString &message)
{
    // 打印 接受到的消息
    qDebug() << "websocket message:" << message;
}

 

标签:Widget,ui,websocket,Qt,void,开发,ws,const,include
From: https://www.cnblogs.com/shiyixirui/p/18181476

相关文章

  • 关于Java Chassis 3的契约优先(API First)开发
    本文分享自华为云社区《JavaChassis3技术解密:契约优先(APIFirst)开发》,作者:liubao68。契约优先(APIFirst)开发是指应用程序开发过程中,将API设计作为第一优先级的任务。契约优先开发随着WebServices概念的发展而不断得到重视,特别是微服务架构出现以后,API设计成为影响功能开放、......
  • 实时股票数据API接口websocket接入方法
    一、使用websocket的协议提升传输速度实时金融股票API接口对于投资者和交易员来说至关重要。通过使用WebSocket接入方法,可以轻松获取实时金融股票API接口的数据并及时做出决策。WebSocket是一种高效的双向通信协议,它允许数据的实时推送,避免了不断的轮询请求。这种接入方法具有多......
  • 开发设计
    详细设计技术方案模板一、概要说明二、详细设计1、功能详细设计(必选)说明:聚焦一个系统或一个模块,针对单个功能进行详细设计,这里不仅要表达与外部系统之间的交互,还要表达系统内部的交互,另外可以详细说明核心代码改动点2、交互API设计(可选:涉及到交互API的新增和修改时必选)......
  • QT学习第32天-QMessageBox的使用
     #ifndefWIDGET_H#defineWIDGET_H#include<QWidget>namespaceUi{classWidget;}classWidget:publicQWidget{Q_OBJECTpublic:explicitWidget(QWidget*parent=nullptr);~Widget();privateslots:voidon_pushButton_cli......
  • 盘点5个C#开发的、可用于个人博客的系统
    今天我们就一起盘点下,最近分享项目5个适合做个人博客的开源项目。一、Blog.Core:前后端分离架构项目简介这是一个基于.Net6.0开发的应用框架,采用前后端分离架构,集成了上百个模块,如:统一支付、公众号管理、数据权限、任务调度、数据库读写分离等等。使用这套框架,可以极大的提升开......
  • MQTT服务器连接不上的问题
    问题描述环境:阿里云服务器Ubuntu22.04.3LTS,安装mosquitto后,在虚拟机端订阅消息出现报错(以前用阿里云Ubuntu20.04LTS的服务器装上就能用),以下服务器ip是我乱填的mosquitto_sub-t/iotstuff-h129.25.125.124-p1883Error:Connectionrefused解决办法云服务器ECS->安......
  • Q学习第31天-QThread
     新建一个类: 在Main头文件中定义全局变量和槽函数: 实现如下:使用QThread将一个文本框的值切换我是单数/我是复数#include"mainwindow.h"#include"ui_mainwindow.h"#include<QDateTime>#include<QThread>#include<QDebug>MainWindow::MainWindow(QWidget*par......
  • 一个开源的基于Asp.Net Mvc开发的个人博客系统项目
    项目简介这是一个基于Mvc5构建的简单、代码层级分明的开源个人博客系统。前端美观大气、后台采用RightControl.NET通用角色权限系统,开发简单、效率高。网站配置采用XML配置,灵活可以根据自己是需求进行个性化配置。系统功能完备,完全可以满足需求,基本不用二次开发,非常使用程序......
  • Hi3516DV300开发笔记001——SDK的安装与编译
    1安装SDK​ 在"【易百纳】EB-3516DV300-DC-182型开发板\04.开发板SDK包"找到"Hi3516CV500_SDK_V2.0.2.0.tgz"文件,拷入Linux系统中"work/tools"目录中。1.1解压缩SDK包​ 在Linux服务器上使用命令:tar-zxfHi3516CV500_SDK_V2.0.2.0.tgz​ 解压缩该文件,得到一个Hi3516C......
  • websocket-sharp:.NET平台上的WebSocket客户端与服务器开源库
    1.简介:websocket-sharp提供WebSocket客户端和服务器库,基于C#开发的,并遵循WebSocket协议规范,使得开发人员能够轻松地在.NET应用程序中实现WebSocket通信。https://github.com/sta/websocket-sharpwebsocket-sharp特色功能有:1、简洁易用的API:提供清晰且直观的API接......