以下是一个使用QT实现TCP多并发的简单示例:
#include <QtCore/QCoreApplication>
#include <QtNetwork/QTcpServer>
#include <QtNetwork/QTcpSocket>
class TcpServer : public QTcpServer
{
Q_OBJECT
public:
explicit TcpServer(QObject *parent = nullptr)
: QTcpServer(parent)
{
connect(this, &TcpServer::newConnection, this, &TcpServer::handleNewConnection);
}
protected slots:
void handleNewConnection()
{
while (hasPendingConnections())
{
QTcpSocket *socket = nextPendingConnection();
connect(socket, &QTcpSocket::readyRead, this, &TcpServer::handleReadyRead);
connect(socket, &QTcpSocket::disconnected, socket, &QTcpSocket::deleteLater);
// 处理新连接,可以在这里进行数据读写等操作
qDebug() << "New connection from" << socket->peerAddress().toString();
}
}
void handleReadyRead()
{
QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender());
if (socket)
{
QByteArray data = socket->readAll();
// 处理接收到的数据
qDebug() << "Received data:" << data;
// 可以在这里对接收到的数据进行处理,并发送响应给客户端
socket->write("Response");
}
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
TcpServer server;
if (!server.listen(QHostAddress::Any, 1234))
{
qDebug() << "Failed to start server";
return -1;
}
qDebug() << "Server started on port" << server.serverPort();
return a.exec();
}
#include "main.moc"
这个示例创建了一个TCP服务器,使用QTcpServer监听指定端口。当有新连接到达时,会创建一个QTcpSocket对象,并将其与readyRead信号和disconnected信号连接起来。通过handleReadyRead()槽函数可以处理接收到的数据,你可以在其中进行业务逻辑处理并发送响应给客户端。
注意:这只是一个简单的示例,实际应用中可能需要更多的错误处理、线程管理等。
内容由零声教学AI助手提供,问题来源于学员提问