QTcpSocket不发出错误信号

QTcpSocket does not emit error signal

本文关键字:错误 信号 出错 QTcpSocket      更新时间:2023-10-16

我遇到了一个奇怪的问题。当我尝试连接时,例如连接到127.0.0.1:8080上的脱机服务器时,套接字信号会发出"错误",但当我连接到127.0.0.10:8080127.123.4.5:8080时,信号不会发出错误。出现了什么问题,如何捕捉失败的连接错误?

代码1:

remote_server = new Server(nickname, ip, port);
connect(remote_server, SIGNAL(error(QAbstractSocket::SocketError)),
        SLOT(connection_failed(QAbstractSocket::SocketError)));
remote_server->establish_connection();

代码2:

master_socket = std::move(
            std::unique_ptr<QTcpSocket>(new QTcpSocket(nullptr))
            );
connect(master_socket.get(), SIGNAL(error(QAbstractSocket::SocketError)),
        SIGNAL(error(QAbstractSocket::SocketError)));
master_socket->connectToHost(ip.c_str(), port);
master_socket->waitForConnected(2000);

如果您的tcp套接字在另一个线程中(与ui线程分离),请使用

connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(displayError(QAbstractSocket::SocketError)) , Qt::DirectConnection);

Qt::DirectConnection