Qt Code:
  1. void MyServer::slotReadClient()
  2. {
  3. QTcpSocket* pClientSocket = (QTcpSocket *)sender();
  4. QDataStream in( pClientSocket );
  5.  
  6. in.setVersion( QDataStream::Qt_4_7 );
  7.  
  8. for (;;)
  9. {
  10. if (!m_nNextBlockSize)
  11. {
  12. if (pClientSocket->bytesAvailable() < sizeof( quint16 ))
  13. break;
  14.  
  15. in >> m_nNextBlockSize;
  16. }
  17.  
  18. if (pClientSocket->bytesAvailable() < m_nNextBlockSize)
  19. break;
  20.  
  21. QTime time;
  22. QString str;
  23.  
  24. in >> time >> str;
  25.  
  26. QString strMessage = time.toString() + " " + "Client has sended - " + str;
  27. m_ptxt->append( strMessage );
  28.  
  29. m_nNextBlockSize = 0;
  30.  
  31. sendToClient( pClientSocket, "Server Response: Received \"" + str + "\"" );
  32. }
  33. }
  34.  
  35. // ----------------------------------------------------------------------
  36. void MyServer::sendToClient( QTcpSocket *pSocket, const QString &str )
  37. {
  38. QByteArray arrBlock;
  39. QDataStream out( &arrBlock, QIODevice::WriteOnly );
  40.  
  41. out.setVersion( QDataStream::Qt_4_7 );
  42. out << quint16(0) << QTime::currentTime() << str;
  43.  
  44. out.device()->seek(0);
  45. out << quint16( arrBlock.size() - sizeof( quint16 ) );
  46.  
  47. pSocket->write( arrBlock );
  48. }
To copy to clipboard, switch view to plain text mode