首页 > 其他分享 >【QT】QHash键值对记录QTcpSocket客户端句柄

【QT】QHash键值对记录QTcpSocket客户端句柄

时间:2024-05-30 14:21:52浏览次数:29  
标签:QHash 句柄 QString 键值 SocketMap key static socketMap 客户端

第一步:.h文件代码

#ifndef SOCKETMAP_H
#define SOCKETMAP_H
#include <QHash>
#include <QDebug>
#include <QTcpSocket>
#include <QException>

class SocketMap: public QObject
{
    Q_OBJECT
public:
    SocketMap();

public:
    static bool updateMap(QString key, QTcpSocket *m_socket);
    static QTcpSocket* getSocket(QString key);
    static QHash<QString, QTcpSocket*> getSocketMap();
    static bool removeSocket(QString key);
    static void clearSocket();
private:
    static QHash<QString, QTcpSocket*> socketMap;
};

#endif // SOCKETMAP_H

第二步:.cpp文件代码

#include "SocketMap.h"

SocketMap::SocketMap()
{
}
// 特别注意,静态成员需要赋值,否则编译错误
QHash<QString, QTcpSocket*> SocketMap::socketMap;
// 更新客户端套接字
bool SocketMap::updateMap(QString key, QTcpSocket *m_socket)
{
    socketMap.insert(key, m_socket);
    return true;
}

// 根据key值获取客户端socket
QTcpSocket* SocketMap::getSocket(QString key)
{
    if(socketMap.contains(key)) {
        return socketMap.value(key);
    }
    return NULL;
}
// 获取全部客户端
QHash<QString, QTcpSocket*> SocketMap::getSocketMap()
{
    return socketMap;
}
// 删除客户端
bool SocketMap::removeSocket(QString key)
{
    return socketMap.remove(key);
}
//清空客户端
void SocketMap::clearSocket()
{
    socketMap.clear();
}

第三步:其他类调用
先添加引用
#include "SocketMap.h"
直接调用静态函数
SocketMap::updateMap(str, m_socket);

标签:QHash,句柄,QString,键值,SocketMap,key,static,socketMap,客户端
From: https://www.cnblogs.com/qiutian-hao/p/18222244

相关文章

  • TIDB存储TiKV的键值对数据
    1.TiDB概述TiDB是一款开源分布式关系型数据库,同时支持在线事务处理(OLTP)与在线分析处理(OLAP)的混合型(HybridTransactionalandAnalyticalProcessing,HTAP)分布式数据库,具备水平扩容或缩容、金融级高可用、实时HTAP、Kubernetes云原生的分布式数据库、兼容MySQL5......
  • vb.net 利用APi 、句柄,通过GetWindowThreadProcessId 获得窗口所在进程ID和线程ID 结
    '''<summary>'''声明'''</summary>'''<paramname="hwnd"></param>'''<paramname="lpdwProcessId"></param>......
  • 全局句柄表
    1.全局句柄表句柄介绍句柄一共有3种全局句柄表进程线程句柄表私有句柄表进程私有的窗口句柄全局句柄表在全局句柄表种只有进程和线程对象OpenProcess/OpenThread权限是否继承和id获取创建进程的handle的流程:获取到进程id取全局句柄表种找到进程对象,把进程对象......
  • 查询指定用户的unique,primary索引名/键值
    --1.SQL用postgres账户查询PostgreSQL中指定DB以及schema下唯一索引的信息,按照表名:索引名:索引键值并按表名排序输出SELECTt.tablenameAStable_name,i.indexnameASindex_name,string_agg(a.attname,','ORDERBYa.attnum)ASindex_keysFROMpg_i......
  • 快速部署 微软开源的 Garnet 键值数据库
    快速部署微软开源的Garnet键值数据库Garnet是MicrosoftResearch推出的一种新型远程缓存存储,其设计速度极快、可扩展且延迟低。Garnet在单个节点内是线程可扩展的。它还支持分片集群执行、复制、检查点、故障转移和事务。它可以在主内存以及分层存储(例如SSD和Azure存......
  • linux文件句柄数满,linux文件句柄数超出系统限制怎么办?
    1、问题阐述:toomanyopenfiles:顾名思义即打开过多文件数。不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。2、产生的原因:经常在使用linux的时候出现,大多数......
  • golang etcd键值存储系统
    目录存储配置文件watch命令在Go语言中,etcd是一个高可用的键值存储系统,它主要用于共享配置和服务发现。etcd由CoreOS团队开发,它是Kubernetes项目中用于存储所有集群数据的关键组件。etcd使用Raft协议来保持集群之间的数据一致性,并且提供了强一致性保证https://blog.csdn.net/jo......
  • selenium之浏览器操作和句柄、常见f12操作
    1、获取驱动1.1查看版本号1.2驱动下载下载驱动https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/?form=MA13LH进入页面后选择对应版本下载1.3驱动配置将解压后的浏览器驱动放在python同级目录2、操作浏览器2.1常用操作fromseleniumimpo......
  • Windows窗口句柄监控
    我说想要一段实现了当发现windows桌面上冒出新窗口就截图保存的功能,AI写的,测了下能用。#pipinstallpyautoguipywin32importtimeimportwin32guiimportpyautoguidefcapture_window_screenshot(hwnd):"""截取截图"""screenshot=pyautogui.screenshot()......
  • 【御控】JavaScript JSON结构转换(1):对象To对象——键值互换
    文章目录一、JSON是什么?二、JSON结构转换是什么?三、核心构件之转换映射四、案例之《JSON对象ToJSON对象》五、代码实现六、在线转换工具七、技术资料一、JSON是什么?Json(JavaScriptObjectNotation)产生于20世纪90年代初,最初由道格拉斯·克罗克福特(DouglasCrockfo......