2012-11-08 136 views
0

我正在編程一個服務器,我編寫了服務和管理器。當我停止與UI服務器管理器的服務器,該服務器調用一個名爲「stopServer()」函數,該函數包含以下內容:QTcpServer關閉時崩潰

qDebug() << "Stopping the server..."; 
// Clear the vector and free the memory by deleting pointers 
qDebug() << clients.size(); 
for(int i=0;i<clients.size();i++){ 
    clients.get(i)->getSocket()->flush(); 
    clients.get(i)->getSocket()->close(); 
    clients.get(i)->getSocket()->disconnectFromHost(); 
    clients.get(i)->getSocket()->waitForDisconnected(3); 
} 
clients.destroy(); 
// Close the server 
socket_server->close(); 
// Stop the handler 
qDebug() << "Stopped."; 

其實,這「客戶」變量是一個僅包含一個向量用戶數據,他關閉每個連接的QTcpSocket,然後清理客戶端變量並將其重置爲0.

當我在服務器上有一個連接(UI Manager作爲其中一個連接)時,我嘗試停止它,它失敗。我刪除了這個矢量系統。它仍然不起作用,它不會給我任何錯誤,只會使應用程序崩潰。

如果您需要所有的代碼,請告訴我!

(對不起我的英文不好...)

更新:如果我刪除 「socket_server->關閉()」 它的工作沒有任何問題。 更新#2:它似乎是刪除指針的問題。 Idk ....

求解:Omg我是個笨蛋! socket_server是一個空指針......我只是解決了這個問題,就是這樣!

+3

不要編輯標題以包含單詞「解決」,請發佈答案並將其標記爲「已接受」。這將防止在顯示未解答問題時顯示問題。 –

+0

阿諾德是正確的。如果你已經解決了問題,請回答問題並接受它。 – 2012-11-08 00:59:07

+0

只是暗示未來:如果你的代碼崩潰了,請使用調試器!如果在調試器中仍然看不到任何有用的信息,則詢問問題(代碼+調試器報告) –

回答

0

Omg我是個笨蛋! socket_server是一個空指針......我只是解決了這個問題,就是這樣!

+0

檢查答案爲**解決**。 – troyane