#pragma once #include #include #include class TcpClient : public QObject { Q_OBJECT public: explicit TcpClient(QObject* parent = nullptr); ~TcpClient() override; bool ConnectToServer(const QString& address); void Disconnect(); bool IsConnected() const; bool IsNeedConnect() const; Q_SIGNALS: void MessageReceivered(const QString& message); protected: void OnConnected(); void OnDisconnected(); void OnReadyRead(); void OnStateChanged(QAbstractSocket::SocketState state); void OnError(QAbstractSocket::SocketError error); void SendHeartbeat(); void OnConntectTimeout(); private: QTcpSocket* m_socket; QTimer* m_heartbeatTimer; QString m_ip; qint16 m_port; QTimer* m_connectTimer; };