1

我正在对服务器进行编程,我对服务和管理器进行了编程。当我使用 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:似乎是指针删除的问题。想...

已解决:天哪,我是个笨蛋!socket_server 是一个空指针...我刚刚修复了它,就是这样!

4

1 回答 1

0

天哪,我是个笨蛋!socket_server 是一个空指针...我刚刚修复了它,就是这样!

于 2012-11-08T01:19:20.067 回答