QT QTcpServer無法觸發newConnection()信號/QTcpServer中的incomingConnection函數不執行的問題

        最近在做tcp聊天室的實驗時,遇到一個讓人哭笑不得的問題.

        問題帶來的現象是:單獨測試客戶端可以顯示連接成功,單獨使用cmd命令“ netstat -a”測試服務端也能進入監聽狀態,但是服務端就是無法被觸發newConnection()(或其他客戶端接入信號);同樣,重載的incomingConnection()函數也無法進入!

        問題困擾了我兩週,自己的程式對照了一遍又一遍,別人的程式看了一份又一份,始終無法解決,最後在關鍵字深挖的時候,看到一篇博客,問題才得以解決,

        其實問題的主要原因就是:因爲incomingConnection()函數被重寫,所以你重寫成什麼樣子他也不會報錯.在舊版本的QT(可能是5.5及之前版本,但是不確定)中,此函數是這樣定義的"void QTcpServer::incomingConnection(int socketDescriptor)",而在新版本里,這個函數的定義成了這樣"void QTcpServer::incomingConnection(qintptr socketDescriptor)",注意到嗎,新舊版本的形參類型是不一樣的,在舊版本中是"int",而在新版本中被替換成了"qintptr",替換掉之後,這個問題就被解決了.

 

參考博客:https://blog.csdn.net/lichao_ustc/article/details/51288030

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章