3 回答

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

TA貢獻1825條經(jīng)驗 獲得超4個贊
你把代碼貼全好不好啊,這是聲明的QDataStream 的對象,代碼自己聲明的,并不是預(yù)定義的。它是一個流對象,你可以查看QDataStream 的文檔,繼承自QIODevice,QDataStream out(&block,QIODevice::WriteOnly);這一句聲明了out是一個QDataStream 對象,將聲明QByteArray的實例block最為存儲緩沖區(qū),模式為只寫。 同樣你去看代碼in是一個只讀流,將socket中的數(shù)據(jù)讀出來的功能。in>>的意思是讀出到blocksize中。
和iostream很像,out和in都和網(wǎng)絡(luò)模塊沒任何關(guān)系。

TA貢獻1864條經(jīng)驗 獲得超2個贊
out 就是輸出,即發(fā)送
in 是輸入 , 即接收
接收 緩存,不會有最終的數(shù)據(jù)的大小的,只會有當前緩存的數(shù)據(jù)的大小。
- 3 回答
- 0 關(guān)注
- 871 瀏覽
添加回答
舉報