#ifndef VRTCPSERVER_H #define VRTCPSERVER_H #include "IVrTcpServer.h" #include #include #include #include class VrTcpServer : public IVrTcpServer { Q_OBJECT public: explicit VrTcpServer(QObject *parent = nullptr); ~VrTcpServer() override; // 接口实现 bool startServer(quint16 port) override; void stopServer() override; bool isListening() const override; quint16 serverPort() const override; // 客户端管理 QStringList getClientIds() const; bool disconnectClient(const QString &clientId); qint64 sendDataToClient(const QString &clientId, const QByteArray &data); qint64 sendDataToClient(const QString &clientId, const char *data, qint64 size); qint64 broadcastData(const QByteArray &data); qint64 broadcastData(const char *data, qint64 size); QHostAddress getClientAddress(const QString &clientId) const; quint16 getClientPort(const QString &clientId) const; private slots: void onNewConnection(); void onClientDisconnected(); void onClientReadyRead(); void onClientBytesWritten(qint64 bytes); void onServerError(QAbstractSocket::SocketError error); private: QTcpServer *m_server; QMap m_clients; quint16 m_port; QString generateClientId(QTcpSocket *socket); }; #endif // VRTCPSERVER_H