_Cepera_
Пользователь
Сообщений: 41
|
|
« Ответ #5 : 21 Декабрь, 2015, 12:53:05 » |
|
//Поток void CChannelThread :: run() { while(flag) { if (connection) { emit connectCH(); connection = false; } } return; } void CChannelThread :: stop() { flag = false; deleteLater(); }
//Создаю наследника для соединения. CSocketThread :: CSocketThread(CSocket * _csocket) : CChannelThread(false, _csocket->dataList->module) { csocket = _csocket; err = false; connect(csocket->udpSocket, SIGNAL(connected()), this, SLOT(connected())); connect(this, SIGNAL(connectTrue(quint32)), csocket, SLOT(socketConnected(quint32))); connect(this, SIGNAL(connectFalse(quint8)), csocket, SLOT(connectedFalse(quint8))); connect(csocket->udpSocket, SIGNAL(error(QAbstractSocket::SocketError)) , this, SLOT(socketError())); connect(this, SIGNAL(connectCH()), this, SLOT(socketConnect())); timer->start(_csocket->dataList->module->connectProc.maxTime); time->start(); connection = true; } void CSocketThread :: socketConnect() // соединение { csocket->udpSocket->connectToHost(csocket->serverAddress, csocket->serverPort); //Если соединение выполняется успешно, то приходит сигнал с CSoket и выполняется функция stop() } void CSocketThread :: socketError() { err = true; socketConnect(); } void CSocketThread :: timeout() { timer->stop(); if (!err) emit connectFalse(1); else emit connectFalse(2);
stop(); }
//Отправка сообщения void CSocket :: udpWrite (QByteArray message, QHostAddress ha, quint16 port) { QDataStream out(&message, QIODevice::WriteOnly); out.setVersion(QDataStream::Qt_5_5); udpSocket->writeDatagram(message, ha, port); MessageList * mdl = dataList->module->messageDataList; mdl->append (Name, ha, port, QTime::currentTime(), 1, message);
}
|