我在编写服务器程序,我编写了服务程序和一个管理器。当我使用UI服务器管理器停止服务器时,服务器调用一个名为"stopServer()“的函数,该函数包含以下内容:
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.";实际上," clients“变量只是一个包含用户数据的向量,他关闭每个连接的QTcpSocket,然后清除clients变量并将其重置为0。
当我在服务器上有一个连接( UI管理器作为其中一个连接工作)时,我试图停止它,它失败了。我移除了那个矢量系统。它仍然不工作,它没有给我任何错误,只是使应用程序崩溃。
如果你需要所有的代码,尽管告诉我!
(很抱歉我的英语不好...)
更新:如果我删除"socket_server->close()“,它可以正常工作,没有任何问题。更新2:这似乎是一个指针删除的问题。Idk……
解决方案:天哪,我是个笨蛋!socket_server是一个空指针...我只是解决了这个问题,仅此而已!
发布于 2012-11-08 09:19:20
天哪,我是个笨蛋!socket_server是一个空指针...我只是解决了这个问题,仅此而已!
https://stackoverflow.com/questions/13280436
复制相似问题