2012-11-08 5 views
0

서버를 프로그래밍하면서 서비스와 관리자를 프로그래밍했습니다. 사실닫을 때 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."; 

, "클라이언트"변수가 포함되어 있습니다 만 벡터 있다는 : 나는 UI 서버 관리자를 사용하여 서버를 중지하면, 서버는 해당 기능은 다음 포함, "중지 stopServer()"라는 함수를 호출 사용자 데이터를 저장 한 다음 각 연결에 대해 QTcpSocket을 닫은 다음 clients 변수를 지우고 0으로 다시 설정하십시오.

서버에 하나의 연결이있을 때 (UI 관리자가 해당 연결 중 하나 일 때) 그것을 막으려면 실패합니다. 나는 그 벡터 시스템을 제거했다. 그리고 그것은 여전히 ​​작동하지 않습니다, 그것은 나에게 어떤 오류도주지 않습니다, 그냥 응용 프로그램을 충돌합니다.

모든 코드가 필요하면 알려주세요! (내 나쁜 영어 죄송합니다 ...)

업데이트 : 제거 할 경우 "socket_server-은> 닫기()"는 아무 문제없이 작동합니다. # 2 업데이트 : 포인터 삭제시 문제가되는 것 같습니다. Idk ....

해결 : 나는 멍청했다! socket_server는 널 포인터였습니다 ... 나는 단지 그것을 고쳤습니다.

+3

"해결됨"이라는 단어가 포함되도록 제목을 편집하는 대신 대답을 게시하고 "수락 함"으로 표시하십시오. 이렇게하면 답이없는 질문을 표시 할 때 질문이 표시되지 않습니다. –

+0

아놀드가 정확합니다. 문제를 해결했다면 질문에 답하고 동의하십시오. –

+0

미래를위한 힌트 : 코드가 추락하면 디버거를 사용하십시오! 그래도 여전히 디버거에서 아무 것도 볼 수 없다면 질문을하십시오 (코드 + 디버거 보고서) –

답변

0

Omg 나는 바보 같았다! socket_server는 널 포인터였습니다 ... 나는 단지 그것을 고쳤습니다.

+0

답을 ** 해결됨 **으로 확인하십시오. – troyane

관련 문제