admin 管理员组

文章数量: 887142


2023年12月22日发(作者:radius server no response)

qt socket 通信实例

QT是一种跨平台的C++应用程序开发框架,其中包含丰富的网络编程功能,如Socket通信。本文将介绍如何使用QT实现Socket通信的基本步骤和示例代码。

1. 创建Socket

QTCPSocket和QTUDPSocket是QT提供的两个Socket类,前者用于TCP通信,后者用于UDP通信。创建Socket的基本步骤如下:

```

QTcpSocket *socket = new QTcpSocket(this); // 创建一个TCP Socket

socket->connectToHost('127.0.0.1', 8888); // 连接服务器

```

2. 发送数据

可以使用QByteArray类作为数据的容器,并使用write()函数将数据发送给服务器。

```

QByteArray data = 'Hello world!';

socket->write(data);

```

3. 接收数据

使用QT的信号和槽机制,当读取到数据时会触发readyRead()信号。可以在该信号的槽函数中读取数据。

- 1 -

```

connect(socket, SIGNAL(readyRead()), this,

SLOT(readData()));

...

void MyClass::readData()

{

QByteArray data = socket->readAll();

// 处理数据

}

```

4. 关闭Socket

使用close()函数关闭Socket连接。

```

socket->close();

```

完整代码示例

下面是一个简单的QT Socket通信示例。

```

#include

class MyClass : public QObject

{

Q_OBJECT

- 2 -

public:

MyClass(QObject *parent = nullptr)

: QObject(parent)

{

socket = new QTcpSocket(this);

connect(socket, SIGNAL(readyRead()), this,

SLOT(readData()));

connect(socket, SIGNAL(disconnected()), this,

SLOT(disconnected()));

socket->connectToHost('127.0.0.1', 8888);

}

public slots:

void readData()

{

QByteArray data = socket->readAll();

qDebug() << 'Received data:' << data;

}

void disconnected()

{

qDebug() << 'Socket disconnected';

}

private:

- 3 -

QTcpSocket *socket;

};

int main(int argc, char *argv[])

{

QCoreApplication app(argc, argv);

MyClass myClass(&app);

return ();

}

```

这是一个TCP Socket的客户端示例,它连接到服务器127.0.0.1的8888端口,并在接收到数据时输出到控制台。

- 4 -


本文标签: 数据 函数 使用 用于 连接