使用 QtcpServer 监听本地服务器

本指南将逐步指导您使用 QtcpServer 创建一个监听本地服务器的简单 TCP 服务器。

1. 创建 Qt 项目

在 Qt 中,打开一个新的项目。

2. 添加 QtcpServer 类

在 Qt Creator 中,找到左侧工具栏中的“项目”选项卡并单击它。在项目选项卡中,选择“添加新的 Qt 类”。在弹出窗口中,选择“QtcpServer”类,然后单击“下一步”。输入类名称(例如“Server”),并单击“下一步”。选择要将类添加到的文件夹,并单击“完成”。

3. 创建 Server 类

在 Server 类的构造函数中,使用以下代码创建一个 QtcpServer 对象并将其绑定到本地主机地址和端口:

Server::Server(QObject *parent) : 
    QObject(parent)
{
    tcpServer = new QTcpServer(this);

    // 监听本地地址和端口
    if (!tcpServer->listen(QHostAddress::LocalHost, 1234)) {
        qDebug() << 'Unable to start the server: ' << tcpServer->errorString();
        return;
    }

    qDebug() << 'Server is running on: ' << tcpServer->serverAddress() << ':' << tcpServer->serverPort();

    connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newConnection()));
}

注意,我们使用了“LocalHost”地址和“1234”端口来监听本地服务器。您可以根据需要更改这些值。

4. 创建 newConnection 槽函数

在 Server 类中,创建一个名为“newConnection”的槽函数,以接受新的客户端连接:

void Server::newConnection()
{
    QTcpSocket *clientSocket = tcpServer->nextPendingConnection();
    connect(clientSocket, SIGNAL(readyRead()), this, SLOT(readData()));
    connect(clientSocket, SIGNAL(disconnected()), clientSocket, SLOT(deleteLater()));
}

此槽函数将创建一个新的 QTcpSocket 对象,并建立与客户端的连接。然后,它将连接信号 readyRead() 和 disconnected() 到相应的槽函数。

5. 创建 readData 槽函数

在 Server 类中,创建一个名为“readData”的槽函数,以读取来自客户端的数据:

void Server::readData()
{
    QTcpSocket *clientSocket = (QTcpSocket*)sender();
    QByteArray data = clientSocket->readAll();
    qDebug() << 'Data received: ' << data;
}

此槽函数将读取来自客户端的数据,并将其输出到控制台。

6. 编译和运行

现在,您可以编译并运行项目。当应用程序在本地主机地址和端口上运行时,它将开始监听来自客户端的连接。

7. 测试服务器

要测试服务器,请使用 telnet 命令连接到本地主机地址和端口:

telnet localhost 1234

您应该能够看到“Connected to localhost”消息。现在,您可以在 telnet 客户端中键入任何文本,并在控制台中看到来自客户端的数据。

总结

这就是创建 QtcpServer 监听本地服务器的过程。通过这个指南,您应该能够创建一个基本的 TCP 服务器,并使用 telnet 对其进行测试。

Qt TCP Server: 监听本地服务器的完整指南

原文地址: http://www.cveoy.top/t/topic/nViC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录