qt tcp服务端监听端口怎么写
时间: 2024-09-18 22:05:52 浏览: 45
Qt实现TCP服务端和客户端
在Qt中,使用QTcpServer来创建TCP服务端,监听端口的过程通常包括以下几个步骤:
```cpp
#include <QObject>
#include <QTcpServer>
class MyTcpServer : public QObject {
Q_OBJECT
public slots:
void startListening() {
QTcpServer *server = new QTcpServer(this);
// 设置监听地址和端口
if (!server->listen(QHostAddress::Any, 8080)) { // 8080是示例端口,可以自定义
qDebug("Failed to listen on port: %s", server->errorString().toStdString().c_str());
return; // 关闭并退出
}
qDebug("Server started, listening on port %d", server->port());
// 当有新的连接到来时,运行一个新的线程处理连接
connect(server, &QTcpServer::newConnection, this, [server] (QObject *obj) {
auto socket = qobject_cast<QTcpSocket*>(obj);
if (socket) {
WorkerThread *worker = new WorkerThread(socket);
worker->start();
}
});
}
};
// WorkerThread类用于处理每个连接
class WorkerThread : public QThread {
Q_OBJECT
QPointer<QTcpSocket> socket;
public:
explicit WorkerThread(QTcpSocket *socket) : socket(socket) {}
protected:
virtual void run() override {
// 这里处理客户端的数据交互
// ...
socket->close(); // 连接结束后关闭连接
}
};
```
上述代码首先创建了一个QTcpServer对象,然后尝试监听任意地址(`QHostAddress::Any`)的8080端口。如果监听成功,就会打印出监听的端口,并在收到新的连接时,启动一个新的WorkerThread来处理这个连接。
注意,实际应用中,你需要处理可能出现的监听失败和连接处理过程中的异常。
阅读全文