Guest User

Untitled

a guest
Jan 20th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. QTcpSocket * sock = static_cast<QTcpSocket*>(this->sender());
  2. if (key == 0)
  3. {
  4. QString recv(sock->readLine());
  5. key = recv.toInt();
  6. qDebug() << "Cheia este " << key;
  7.  
  8. char * response = enc_dec("#AUTH|admin|admin",strlen("#AUTH|admin|admin"),key);
  9. sock->write(response);
  10. }
  11. else
  12. {
  13. busy = true;
  14. while (sock->bytesAvailable() > 0)
  15. {
  16. unsigned short word;
  17. sock->read((char*)(&word),2);
  18. qDebug()<<word;
  19. //Sleep(100); if i do this than it works great!
  20. QByteArray bts = sock->read(word);
  21. while (bts.length() < word)
  22. {
  23. char bit; //here get's stuck
  24. if (sock->read(&bit,1) > 0)
  25. bts.append(bit);
  26. sock->flush();
  27. }
  28.  
  29. char * decodat = enc_dec((char*)bts.data(),bts.length() - 2,key);
  30. qDebug() << decodat;
  31. }
  32.  
  33. }
  34.  
  35. QObject::connect(this->m_TCPSocket, SIGNAL(readyRead()), this, SLOT(processRecivedDatagrams()));
  36.  
  37. // SLOT:
  38.  
  39.  
  40. void Network::processRecivedDatagrams(void)
  41. {
  42. if (!this->m_flagLocked) // use analog of mutex
  43. {
  44. this->m_flagLocked = true; // lock resource
  45.  
  46. QByteArray datagram;
  47. do
  48. {
  49. datagram.resize(m_TCPSocket->pendingDatagramSize());
  50. m_TCPSocket->readDatagram(datagram.data(), datagram.size());
  51. }
  52. Qt::String YourString; // actualy I don`t remember how to declare Qt string
  53. while (m_TCPSocket->hasPendingDatagrams());
  54. QDataStream in (&datagram, QIODevice::ReadOnly);
  55.  
  56. in >> YourString
  57.  
  58.  
  59.  
  60. --numberOfDatagrams;
  61. }
  62.  
  63. this->m_flagLocked = false; // unlock resource
  64. }
Add Comment
Please, Sign In to add comment