当前位置: 首页 > news >正文

QTcpServer 封装

来一段自封装,在用的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;
};
 

相关文章:

  • 使用Redis实现文章阅读量、收藏、点赞数量记录功能
  • Postman汉化教程
  • vue中 process.env 对象为空对象问题
  • day12-内核与文件系统衔接流程
  • css控制卡片内部的左右布局
  • 高等数学教材啃书汇总重难点(二)导数与微分
  • RPA在财务预测和分析中的应用
  • Bard和ChatGPT的一些比较
  • 现一个智能的SQL编辑器
  • 一手app拉新地推平台和网推平台升级啦 官签渠道直营
  • 工业物联网模块应用之砂芯库桁架机器人远程无线控制
  • 支持内录系统声音的Mac录屏软件Omi Recorder
  • cmakelist、cmake、makefile、make以及gcc的关系和区别
  • ZZ308 物联网应用与服务赛题第G套
  • Redis系列-Redis过期策略以及内存淘汰机制【6】
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [译]CSS 居中(Center)方法大合集
  • 【前端学习】-粗谈选择器
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Android Volley源码解析
  • Android单元测试 - 几个重要问题
  • Docker 笔记(2):Dockerfile
  • github指令
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • javascript 哈希表
  • Java小白进阶笔记(3)-初级面向对象
  • k个最大的数及变种小结
  • Leetcode 27 Remove Element
  • MaxCompute访问TableStore(OTS) 数据
  • npx命令介绍
  • Object.assign方法不能实现深复制
  • SOFAMosn配置模型
  • tensorflow学习笔记3——MNIST应用篇
  • Terraform入门 - 1. 安装Terraform
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 悄悄地说一个bug
  • 入口文件开始,分析Vue源码实现
  • 入门到放弃node系列之Hello Word篇
  • 算法之不定期更新(一)(2018-04-12)
  • 用mpvue开发微信小程序
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 说说我为什么看好Spring Cloud Alibaba
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • ![CDATA[ ]] 是什么东东
  • #1014 : Trie树
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $.proxy和$.extend
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (ibm)Java 语言的 XPath API
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (九)c52学习之旅-定时器