QT搭建C/S架构服务器端

两年前初学时做的C/S架构服务器,现在整理下发出来供大家参考。

哈哈哈,发现居然有人看,资源放这了,有需要可以瞅瞅,没积分可留言。

首先是入口处,创建tcpServer类进行监听QT使用TCP模块需要在Pro文件加上QT += sql network,sql模块是因为使用了数据库。

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    MyTcpServer* tcpServer = new MyTcpServer();
    tcpServer->listen(QHostAddress::Any, quint16(10626));
    qDebug() << "开始监听端口: 10626";
    return a.exec();
}

MyTcpServer是继承自QTcpServer的类。

该类需要至少重载实现void incomingConnection(qintptr handle)这个函数。

下面是我的.h头文件

class MyTcpServer  : public QTcpServer
{
	Q_OBJECT

public:
	explicit MyTcpServer(QObject* parent = nullptr);
	void incomingConnection(qintptr handle);    // 重载实现该函数进行数据接收读取
	~MyTcpServer();

signals:
    void clientDisconnected(qintptr handle);

protected:
    QHash<QString, bool> userOnlineHash;	//在线
	QHash<qintptr, QThread*> socketThreadHash;	//套接字对应线程
    QHash<QThread*, QString> userThreadHash;    //线程用户
    QHash<QThread*, SqlBusiness*> threadSqlHash;	//每个线程对应sql实例

private:
	USERTYPE m_userType;
    QReadWriteLock dbLock;
};

在我的incomingConnection函数中,即在接收到有连接时,我会创建一个工作类SqlBusiness,该类继承自QObject来实现对QT元对象的支持。为了实现多线程运行多个用户连接,我使用了QT的moveToThread()函数,通过new一个QThread对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柠檬算不酸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值