//tcpserver.h
#ifndef TCPSERVER_H
#define TCPSERVER_H
#include <QTcpServer>
#include <QTimer>
class TcpSession;
class TcpServer : public QTcpServer
{
Q_OBJECT
public:
TcpServer();
~TcpServer();
bool Listen(int port);
void StopAllSession();
private slots:
void AcceptError(QAbstractSocket::SocketError err);
void TimeOutToListen();
void RemoveOneSession();
protected:
virtual void incomingConnection(qintptr sockeDesc) override;
private:
QTimer mTimer;
int mPort;
QList<TcpSession*> mTcpSessionLs;
};
#endif // TCPSERVER_H
// tcpServer.cpp
#include <QThread>
#include <qdebug.h>
#include "tcpserver.h"
#include "TcpSession.h"
TcpServer::TcpServer()
{
connect(this, &TcpServer::acceptError,this,&TcpServer::AcceptError);
connect(&mTimer,&QTimer::timeout,this,&TcpServer::TimeOutToListen);
}
TcpServer::~TcpServer()
{
StopAllSession();
}
QTcpServer多线程处理多个客户端连接
最新推荐文章于 2023-05-31 21:09:39 发布
本文详细介绍了如何使用C++的QTcpServer库,在Visual Studio环境下,实现多线程处理多个并发的客户端连接。通过创建独立的线程来服务每个新的连接,确保了服务器的高效稳定运行。
摘要由CSDN通过智能技术生成