我遇到了一个奇怪的问题。当我尝试连接时,例如连接到127.0.0.1:8080
上的脱机服务器,套接字信号将发出应有的“错误”,但是当我连接到127.0.0.10:8080
或127.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
关于c++ - QTcpSocket不发出错误信号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33977234/