Qt TCP Server: 监听本地服务器的完整指南
使用 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 对其进行测试。
原文地址: http://www.cveoy.top/t/topic/nViC 著作权归作者所有。请勿转载和采集!