Название: QTcpSocket ошибка подключения к серверу
Отправлено: Anton от Март 19, 2006, 22:08
Следующий фрагмент кода компилируется, работает, подключается к серверу, сервер схватывает подключение, но если после этого просто закрыть окно приложения, то вываливается unhandled exception где-то в qtgui4.dll #include "plotterclient.h" #include <QMessageBox> #include <QString>
PlotterClient::PlotterClient(QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, flags) { ui.setupUi(this); connect(&socket,SIGNAL(connected()), this,SLOT(connectionEstablished())); // connection established connect(&socket,SIGNAL(connectionClosed()), this,SLOT(connectionClosedByServer())); connect(&socket,SIGNAL(readyRead()), this,SLOT(dataReceived())); connect(&socket,SIGNAL(error(int)), this,SLOT(error(int))); }
PlotterClient::~PlotterClient() { closeConnection(); QMessageBox::information(0,tr("Destructor"),tr("")); }
void PlotterClient::connectionEstablished() { QMessageBox::information(0,tr("info"),tr("connection established")); }
void PlotterClient::connectionClosedByServer() { QMessageBox::information(0,tr("info"),tr("connectionClosedByServer"));
} void PlotterClient::dataReceived() { QMessageBox::information(0,tr("info"),tr("data received")); }
void PlotterClient::error(int code) { QString message; switch(code) { case QAbstractSocket::ConnectionRefusedError : message = tr("Error: Connection refused"); break; case QAbstractSocket::HostNotFoundError : message = tr("Error: Host not found"); break; default: message = tr("Error: Data transfer failed"); } QMessageBox::critical(0,tr("Error"),message); closeConnection();
}
void PlotterClient::closeConnection() { socket.close(); }
void PlotterClient::on_connectButton_clicked() { host")); socket.connectToHost("localhost",1251); blocksize = 0; }
Название: QTcpSocket ошибка подключения к серверу
Отправлено: Steven_Orko от Март 20, 2006, 00:23
Не анализируя код.... Вообще, хорошим тоном является самому закрывать соединение, а не оставлять эту работу деструкторам. Лови событие о закрытии окна и закрывай соединение в обработчике этого события. Имхо, так будет правильнее...
Название: QTcpSocket ошибка подключения к серверу
Отправлено: Dendy от Март 20, 2006, 10:36
Отдебажь. Посмотри стек вьІзовов.
|