6 Star 3 Fork 2

GPLme / SG-Database

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
TcpSocketServer.h 1.51 KB
一键复制 编辑 原始数据 按行查看 历史
把实验报告投到ECIR 提交于 2021-02-22 19:14 . 优化释放socket
//#pragma once
#ifndef TEST_H
#define TEST_H
#include <QTcpServer>
#include <QObject>
#include <QDebug>
#include <QTcpSocket>
#include <QMap>
#include <queue>
#include <string>
#include <vector>
#include <iostream>
#include "dbProcess.h"
#include "Tcp_tools.h"
class TcpSocket : public QTcpSocket
{
Q_OBJECT
public:
static QMap<QString,TcpSocket*> tcpTree;
TcpSocket(QObject *parent = nullptr)
: QTcpSocket (parent)
{
connect(this, &QTcpSocket::readyRead, [this](){
QString strCode=this->readAll();
processObject sReadData_Object=Tcp_tools::string_to_processObject(strCode.toStdString());
string userid=sReadData_Object.getUser();
if(TcpSocket::tcpTree.count(QString::fromStdString(userid))==0){
TcpSocket::tcpTree[QString::fromStdString(userid)]=this;
}
dbProcess::processQueue.push(sReadData_Object);
});
connect(this, &QTcpSocket::disconnected, [this](){
emit emit_disConnected(this->socketDescriptor());
});
}
signals:
void emit_disConnected(qintptr);
};
class TcpSocketServer:public QTcpServer
{
Q_OBJECT
public:
QList<TcpSocket*> socList;
TcpSocketServer();
virtual void incomingConnection(qintptr handle);
void show_map();
public slots:
void response_handle(processObject);
};
class ServerResponseThread : public QThread
{
Q_OBJECT
public:
virtual void run() override;
signals:
void db_response_signal(processObject);
};
#endif
C++
1
https://gitee.com/sg-first/SG-Database.git
git@gitee.com:sg-first/SG-Database.git
sg-first
SG-Database
SG-Database
master

搜索帮助