第一步:.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);