QTcpSocket 發送數據的幾種方法


 

1、QTcpSocket 繼承於QAbstractSocket繼承於QIODevice

 

 

2、QTcpSocket 提供的幾種接收和發送數據方法

 

  • write ( const char *, qint64 ) : qint64
  • write ( const char * ) : qint64
  • write ( const QByteArray & ) : qint64
  • writeData ( const char *, qint64 ) : qint64
  • read ( char * data, qint64 maxSize ): qint64 
  • read ( qint64 maxSize ):QByteArray
  • readAll ():QByteArray
  • readLine ( char * data, qint64 maxSize ):qint64
  • readLine ( qint64 maxSize = 0 ):QByteArray
 

 

3、例子1  write ( const QByteArray & ) : qint64

 

Cpp代碼   收藏代碼
  1. //用於暫存要發送的數據  
  2. QByteArray block;  
  3. //使用數據流寫入數據  
  4. QDataStream out(&block,QIODevice::ReadWrite);  
  5. //設置數據流的版本,客戶端和服務器端使用的版本要相同  
  6. out.setVersion(QDataStream::Qt_4_6);  
  7.   
  8. //設置發送長度初始值為0  
  9. out << (quint16) 0;  
  10. //設置發送內容  
  11. out<<hash;  
  12.   
  13. //回到字節流起始位置  
  14. out.device()->seek(0);  
  15. //重置字節流長度  
  16. out << (quint16) (block.size()-sizeof(quint16));  
  17.   
  18. //往套接字緩存中寫入數據,並發送  
  19. tcpSocket->write(block);  

 

 

 

 

3、例子2  write ( const char *, qint64 ) : qint64

 

 

Cpp代碼   收藏代碼
  1. QString *a=new QString;  
  2. tcpSocket->write(a,a->length());  

4、例子3  數據流直接使用QIODevice

 

Cpp代碼   收藏代碼
  1. QDataStream in(tcpSocket);  
  2. in<< quint16(0xFFFF); //此時QIODevice加載了此數據,而且直接發送出去  
  3.   
  4. quint16 length = 0;  
  5. QDataStream out(tcpSocket);//如果此時tcpSocket直接有數據發送過來  
  6. out >> length;//length獲得第一個整型值,並在tcpSocket中清空該數據  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM