我正在編程一個服務器,我編寫了服務和管理器。當我停止與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是一個空指針......我只是解決了這個問題,就是這樣!
不要編輯標題以包含單詞「解決」,請發佈答案並將其標記爲「已接受」。這將防止在顯示未解答問題時顯示問題。 –
阿諾德是正確的。如果你已經解決了問題,請回答問題並接受它。 – 2012-11-08 00:59:07
只是暗示未來:如果你的代碼崩潰了,請使用調試器!如果在調試器中仍然看不到任何有用的信息,則詢問問題(代碼+調試器報告) –