亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Qt網絡編程out和in函數的意思的用法 ?

Qt網絡編程out和in函數的意思的用法 ?

Git
犯罪嫌疑人X 2019-02-03 09:05:39
現在學習Qt的網絡編程,下載了一個實例。有代碼看不懂QDataStreamout(&block,QIODevice::WriteOnly);out<<(quint16)0;out<<tr("helloTcp!!!");out.device()->seek(0);其中的 out 是什么意思,類似C++輸出的cout函數嗎?還有QDataStream in (tcpSocket);in>>blockSize; 其中的in類似C++輸入的cout函數嗎?in>>blockSize; 這句話是把什么數據寫入blockSize呢,不是得有兩個參數嗎?
查看完整描述

3 回答

?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

out是一個QDataStream 對象,將聲明QByteArray的實例block最為存儲緩沖區,模式為只寫。 同樣你去看代碼in是一個只讀流,將socket中的數據讀出來的功能。in>>的意思是讀出到blocksize中。和iostream很像,out和in都和網絡模塊沒任何關系。
為了保證在客戶端能接收到完整的文件,都在數據流的最開始寫入完整文件的大小信息,這樣客戶端就可以根據大小信息來判斷是否接受到了完整的文件。而在 服務器端,在發送數據時就要首先發送實際文件的大小信息,但是,文件的大小一開始是無法預知的,所以先使用了out<< (quint16) 0;在block的開始添加了一個quint16大小的空間,也就是兩字節的空間,它用于后面放置文件的大小信息。
然后 out<<tr(“hello Tcp!!!”);輸入實際的文件,這里是字符串。當文件輸入完成后,在使用out.device()->seek(0);返回到block的開 始,加入實際的文件大小信息,也就是后面的代碼,它是實際文件的大?。簅ut<<(quint16) (block.size() – sizeof(quint16));

查看完整回答
反對 回復 2019-03-14
?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

你把代碼貼全好不好啊,這是聲明的QDataStream 的對象,代碼自己聲明的,并不是預定義的。它是一個流對象,你可以查看QDataStream 的文檔,繼承自QIODevice,QDataStream out(&block,QIODevice::WriteOnly);這一句聲明了out是一個QDataStream 對象,將聲明QByteArray的實例block最為存儲緩沖區,模式為只寫。 同樣你去看代碼in是一個只讀流,將socket中的數據讀出來的功能。in>>的意思是讀出到blocksize中。
和iostream很像,out和in都和網絡模塊沒任何關系。

查看完整回答
反對 回復 2019-03-14
?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

out 就是輸出,即發送


in 是輸入 , 即接收

接收 緩存,不會有最終的數據的大小的,只會有當前緩存的數據的大小。

查看完整回答
反對 回復 2019-03-14
  • 3 回答
  • 0 關注
  • 887 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號