// Server.h #ifndef SERVER_H #define SERVER_H #include #include #include #include #include #include #include "Protocol.h" class Server : public QTcpServer { Q_OBJECT public: explicit Server(QObject* parent = nullptr); ~Server(); bool startServer(quint16 port); void stopServer(); private slots: void onNewConnection(); void onClientDisconnected(); void onReadyRead(); void monitorClients(); private: QByteArray getClients(); private: struct ClientInfo { QTcpSocket* socket; QString id; qint64 connectTime; QByteArray buffer; }; void processClientData(QSharedPointer client); bool forwardData(QSharedPointer client, QSharedPointer frame); void replyRequest(QSharedPointer client, QSharedPointer frame); bool sendData(QTcpSocket* socket, QSharedPointer frame); QString id_; QMap> clients_; QReadWriteLock rwLock_; QTimer* monitorTimer_; }; #endif // SERVER_H