QTcpServer 封装

news/2024/11/29 21:41:24/

来一段自封装,在用的QTcpserver,不用去找boost,或是poco,libevent……,也不用去从底层winsocket封装开始,真不用去那么折腾,放着QT自带的不用,那不仅是可惜,是辜负了QT团队的一片苦心……

#pragma once
#include <atomic>
#include <QTcpServer>
#include <QTcpSocket>
#include <QList>
#include <QTimer>
#include <QTcpServer>
#include <mutex>
#include <QObject>

class LQTcpServer :public QObject
{
    Q_OBJECT
public:
    LQTcpServer();
    explicit LQTcpServer(const int svPort);
    ~LQTcpServer();
    QString getSockID(QTcpSocket * mclient) const;
    void setServerPort(const int svPort);
public:
    bool isServerRun() { return isServerRunning; }
    bool sendMSG(std::string strData);
    bool sendData(char* data, const int slen);
    bool sendData(QByteArray data);
    void releaseServer();
    /*
     res:0   已经运行了
     1:运行成功,-1:启动tcpserver失败
    */
    int startServer();
    bool pause();
    bool resume();
signals:
    void onClientConnected(QTcpSocket* sender, QString senderInfo);
    void onClientDisconnected(QString senderInfo);
    void onServerRead(QTcpSocket* sender,const QByteArray mRevData,QString senderInfo);
protected:    
    QList<QTcpSocket *> clients;
    QTcpServer* mGServer;
    //QTcpSocket* connectClient;

protected slots:
    void new_client();
    void distconnect_client();
    void read_data();
private:
    int mServerPort;
    std::atomic_bool isServerRunning;
};
 


http://www.ppmy.cn/news/1201194.html

相关文章

read 方法为什么返回 int 类型

在Java的输入流&#xff08;InputStream&#xff09;中&#xff0c;read方法返回int类型的值的原因是为了提供更多的信息和灵活性。虽然这可能看起来有些不直观&#xff0c;但有一些合理的考虑和用途&#xff0c;主要包括以下几点&#xff1a; EOF标志&#xff1a;read方法返回…

[科研图像处理]用matlab平替image-j,有点麻烦,但很灵活!

做材料与生物相关方向的同学应该对image-j并不陌生&#xff0c;前几天有个师兄拜托我用image-j分析一些图片&#xff0c;但使用过后发现我由于不了解image-j的工作流程而对结果并不确信&#xff0c;而且image-j的功能无法拓展&#xff0c;对有些图片的处理效果并不好&#xff0…

对内网穿透的理解

自存用 内网穿透是什么意思&#xff1f; - 知乎

使用 OpenTracing 和 LightStep 监控无服务器功能

无服务器功能的采用在企业组织内达到了创纪录的水平。有趣的是&#xff0c;鉴于越来越多的采用和兴趣&#xff0c;许多监控解决方案孤立了在这些环境中执行的代码的性能&#xff0c;或者仅提供有关执行的基本指标。为了了解应用程序的性能&#xff0c;我想知道存在哪些瓶颈、时…

Antv/G2 自定义tooltip鼠标悬浮提示信息

Antv/G2 提示 - Tooltip 教程 Tooltip 提示信息文档 chart.line().position(label*value).color(type).tooltip(type*value, (type:string, value:number) > { return {name: type,value: value%}}) });demo&#xff1a; <!DOCTYPE html> <html lang&quo…

Python | 安装、环境配置及包的安装

Python | 安装、环境配置及包的安装 一、前言二、python安装及编辑器配置2.1 python安装2.2 python调试2.3 python编辑器 | PyCharm2.3.1 PyCharm下载2.3.2 PyCharm安装2.3.3 PyCharm启动界面2.3.4 PyCharm初步设置2.3.5 PyCharm环境配置(含Python Interpreter配置)2.3.5.1 New…

echarts地图固定位置提示

需求 在使用地图标记的时候需要标注不同颜色对应的状态信息 需要添加一个png图片进行提示 解决 使用相对定位 注意 组件的poision的属性值默认是static &#xff0c;在这个状态下&#xff0c; 设置 zindex、 top, bottom, left, right等都是没有效果的

DCU集群搭建虚拟环境方法简介

1.conda安装方法&#xff1a; wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh #下载miniconda安装包chmod 750 Miniconda3-latest-Linux-x86_64.sh #添加执行权限bash ./Miniconda3-latest-Linux-x86_64.sh #安装下载的minnconda32.集群安装…