2012-11-08 103 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