我正在编程一个服务器,我编写了服务和管理器。当我停止与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
只是暗示未来:如果你的代码崩溃了,请使用调试器!如果在调试器中仍然看不到任何有用的信息,则询问问题(代码+调试器报告) –