qttcp服务器代码
时间: 2023-11-01 10:07:34 浏览: 75
QTcpServer学习代码
以下是一个简单的 Qt TCP 服务器的代码示例:
```cpp
#include <QTcpServer>
#include <QTcpSocket>
class MyServer : public QTcpServer {
public:
explicit MyServer(QObject* parent = nullptr) : QTcpServer(parent) {}
protected:
// 有新的客户端连接
void incomingConnection(qintptr socketDescriptor) override {
// 创建一个新的 socket
QTcpSocket* clientSocket = new QTcpSocket(this);
// 将 socket 绑定到客户端连接
clientSocket->setSocketDescriptor(socketDescriptor);
// 连接 socket 的 readyRead() 信号
connect(clientSocket, &QTcpSocket::readyRead, this, [clientSocket]() {
// 读取客户端发送的数据
QByteArray data = clientSocket->readAll();
// 处理数据
// ...
// 回复客户端
clientSocket->write("Received data: " + data);
});
// 连接 socket 的 disconnected() 信号
connect(clientSocket, &QTcpSocket::disconnected, this, [clientSocket]() {
// 客户端断开连接,释放 socket
clientSocket->deleteLater();
});
}
};
int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
MyServer server;
server.listen(QHostAddress::Any, 1234); // 监听所有 IP 地址的 1234 端口
return app.exec();
}
```
这是一个非常简单的实现,当有新的客户端连接时,会创建一个新的 `QTcpSocket` 对象,并连接该对象的 `readyRead()` 和 `disconnected()` 信号,其中 `readyRead()` 信号在有数据可读时触发,`disconnected()` 信号在客户端断开连接时触发。在 `readyRead()` 中读取客户端发送的数据并进行处理,然后通过 `write()` 方法回复客户端。在 `disconnected()` 中释放 `QTcpSocket` 对象。
阅读全文