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));

TA貢獻1825條經驗 獲得超4個贊
你把代碼貼全好不好啊,這是聲明的QDataStream 的對象,代碼自己聲明的,并不是預定義的。它是一個流對象,你可以查看QDataStream 的文檔,繼承自QIODevice,QDataStream out(&block,QIODevice::WriteOnly);這一句聲明了out是一個QDataStream 對象,將聲明QByteArray的實例block最為存儲緩沖區,模式為只寫。 同樣你去看代碼in是一個只讀流,將socket中的數據讀出來的功能。in>>的意思是讀出到blocksize中。
和iostream很像,out和in都和網絡模塊沒任何關系。
- 3 回答
- 0 關注
- 887 瀏覽
添加回答
舉報