2013-05-26 24 views
1

嘗試連接:與QTcpSocket - 檢查連接

QTcpSocket *tcpClient = new QTcpSocket(this); 
tcpClient->connectToHost(ip_address, portNumber); 

connectToHost返回void。
那麼我應該怎麼做才能檢查tcpClient是否連接到給定的地址和端口?
如何在超時過期時嘗試連接嘗試允許的超時並檢查連接狀態?

回答

4

QAbstractSocket::waitForConnected會給你正是你想要的,如果你能夠阻止當前的線程,直到連接或超時。如果不是,則使用信號QAbstractSocket::stateChanged。例如。在你的類聲明有

class C 
{ 
    public slots: 
     void HandleStateChange(AbstractSocket::SocketState socketState); 
    ... 
}; 

定義它,很明顯,再經過tcpClient聲明有

connect(tcpClient, SIGNAL(stateChanged(AbstractSocket::SocketState)), 
      this, SLOT(HandleStateChange(AbstractSocket::SocketState))); 

這與定時查詢tcpClient->state()的同時,會告訴你到底發生了什麼的套接字並讓你響應它。

+0

似乎在'connect'處錯過了一個圓括號:)我怎樣才能編輯一個parethesis? – CDT

+0

@CDT我認爲這個系統會迫使第三方編輯只做更長時間的編輯,我自己也看到了這一點 - 但是謝謝,照顧! –