GrabBag/VrNets/tcpClient/Inc/IVrTcpClient.h

56 lines
1.4 KiB
C++

#ifndef IVRTCPCLIENT_H
#define IVRTCPCLIENT_H
#include <QObject>
#include <QByteArray>
#include <QHostAddress>
class IVrTcpClient : public QObject
{
Q_OBJECT
public:
explicit IVrTcpClient(QObject *parent = nullptr) : QObject(parent) {}
virtual ~IVrTcpClient() {}
// 连接服务器
virtual bool connectToServer(const QString &host, quint16 port) = 0;
virtual bool connectToServer(const QHostAddress &address, quint16 port) = 0;
// 断开连接
virtual void disconnectFromServer() = 0;
// 发送数据
virtual qint64 sendData(const QByteArray &data) = 0;
virtual qint64 sendData(const char *data, qint64 size) = 0;
// 获取连接状态
virtual bool isConnected() const = 0;
// 获取服务器地址和端口
virtual QHostAddress serverAddress() const = 0;
virtual quint16 serverPort() const = 0;
signals:
// 连接状态变化信号
void connected();
void disconnected();
void connectionError(const QString &errorString);
// 数据接收信号
void dataReceived(const QByteArray &data);
// 数据发送信号
void dataSent(qint64 bytesSent);
protected:
// 设置连接状态(供子类使用)
void setConnected(bool connected) { m_connected = connected; }
bool m_connected = false;
QHostAddress m_serverAddress;
quint16 m_serverPort = 0;
};
#endif // IVRTCPCLIENT_H