2015-11-28 34 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

相關問題