Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- QTcpSocket * sock = static_cast<QTcpSocket*>(this->sender());
- if (key == 0)
- {
- QString recv(sock->readLine());
- key = recv.toInt();
- qDebug() << "Cheia este " << key;
- char * response = enc_dec("#AUTH|admin|admin",strlen("#AUTH|admin|admin"),key);
- sock->write(response);
- }
- else
- {
- busy = true;
- while (sock->bytesAvailable() > 0)
- {
- unsigned short word;
- sock->read((char*)(&word),2);
- qDebug()<<word;
- //Sleep(100); if i do this than it works great!
- QByteArray bts = sock->read(word);
- while (bts.length() < word)
- {
- char bit; //here get's stuck
- if (sock->read(&bit,1) > 0)
- bts.append(bit);
- sock->flush();
- }
- char * decodat = enc_dec((char*)bts.data(),bts.length() - 2,key);
- qDebug() << decodat;
- }
- }
- QObject::connect(this->m_TCPSocket, SIGNAL(readyRead()), this, SLOT(processRecivedDatagrams()));
- // SLOT:
- void Network::processRecivedDatagrams(void)
- {
- if (!this->m_flagLocked) // use analog of mutex
- {
- this->m_flagLocked = true; // lock resource
- QByteArray datagram;
- do
- {
- datagram.resize(m_TCPSocket->pendingDatagramSize());
- m_TCPSocket->readDatagram(datagram.data(), datagram.size());
- }
- Qt::String YourString; // actualy I don`t remember how to declare Qt string
- while (m_TCPSocket->hasPendingDatagrams());
- QDataStream in (&datagram, QIODevice::ReadOnly);
- in >> YourString
- --numberOfDatagrams;
- }
- this->m_flagLocked = false; // unlock resource
- }
Add Comment
Please, Sign In to add comment