
像这种多个任务同时下载,需要有同时有多个QTcpServer和QTcpSocket的连接吗?

关注让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
如果答案让您满意,请采纳、关注,非常感谢!不需要同时拥有多个QTcpServer和QTcpSocket的连接。可以使用一个QTcpServer监听多个客户端连接,对每个连接使用一个独立的QTcpSocket进行通信。下面是一个简单的示例代码:
#include <QtNetwork>
class MyServer : public QTcpServer
{
Q_OBJECT
public:
MyServer(QObject *parent = nullptr) : QTcpServer(parent)
{
listen(QHostAddress::Any, 1234); // 监听1234端口
}
protected:
void incomingConnection(qintptr socketDescriptor) override
{
QTcpSocket *clientSocket = new QTcpSocket();
clientSocket->setSocketDescriptor(socketDescriptor);
connect(clientSocket, &QTcpSocket::readyRead, this, [clientSocket]()
{
QByteArray data = clientSocket->readAll();
qDebug() << data;
});
}
};
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
MyServer server;
return app.exec();
}
#include "main.moc"
在上面的示例中,MyServer继承自QTcpServer,并重写了incomingConnection函数,该函数会在有新的客户端连接时被调用,创建一个新的QTcpSocket用于通信。每个客户端的消息接收都会打印在控制台上。 可以根据具体的需求来扩展和修改这个示例代码。