用qt写一段代码把socket所有的功能封装成一个类
时间: 2023-06-04 12:04:11 浏览: 112
好的,我可以帮您解答这个问题。以下是一个使用Qt的socket类的示例代码:
```cpp
#include <QObject>
#include <QTcpSocket>
class MySocket : public QObject
{
Q_OBJECT
public:
MySocket(QObject* parent = nullptr) : QObject(parent)
{
m_socket = new QTcpSocket(this);
connect(m_socket, &QTcpSocket::connected, this, &MySocket::connected);
connect(m_socket, &QTcpSocket::disconnected, this, &MySocket::disconnected);
connect(m_socket, &QTcpSocket::readyRead, this, &MySocket::readyRead);
connect(m_socket, static_cast<void(QAbstractSocket::*)(QAbstractSocket::SocketError)>(&QAbstractSocket::error), this, &MySocket::error);
}
virtual ~MySocket()
{
m_socket->close();
delete m_socket;
}
public:
void connectToHost(const QString& host, quint16 port)
{
m_socket->connectToHost(host, port);
}
void disconnectFromHost()
{
m_socket->disconnectFromHost();
}
void write(const QByteArray& data)
{
m_socket->write(data);
}
signals:
void connected();
void disconnected();
void readyRead();
void error(QAbstractSocket::SocketError);
private:
QTcpSocket* m_socket;
};
```
在这个代码中,我们将所有socket的功能封装在了一个名为`MySocket`的类中。该类继承自`QObject`,并包含了一个`QTcpSocket`对象,并在构造函数中连接了与该对象相关的几个信号。
此外,`MySocket`类还包含了一些公共函数,如连接主机、断开连接和写入数据的函数。在实际使用中,我们可以将该类实例化并调用其公共函数来使用socket。
阅读全文