2015-11-28 38 views
1

我遇到了一个奇怪的问题。当我尝试连接时,例如127.0.0.1:8080上的离线服务器,套接字信号发出“错误”,因为它应该,但是当我连接到127.0.0.10:8080127.123.4.5:8080信号不会发出错误。有什么问题,以及如何捕捉失败的连接错误?QTcpSocket不会发出错误信号

代码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); 
+0

如果您的服务器回送接口(这是127.0.0.1/8)在听我的话你都地址(127.0.0.10,127.123.4.5)将启动并可用。你能否提供“netstat -nap | grep LISTEN”输出来澄清你的问题? –

回答

0

如果你的TCP套接字是在另一个线程(单独从UI线程)使用

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

的Qt :: DirectConnection

相关问题