qt中的out与in

QDataStreamout(&block,QIODevice::WriteOnly);
out<<(quint16)0;
out< out.device()->seek(0);

QDataStream in (tcpSocket);


out是一个QDataStream 对象,将声明QByteArray的实例block置为存储缓冲区,模式为只写。 同样你去看代码in是一个只读流,将socket中的数据读出来的功能。in>>的意思是读出到blocksize中。和iostream很像,out和in都和网络模块没任何关系。
为了保证在客户端能接收到完整的文件,都在数据流的最开始写入完整文件的大小信息,这样客户端就可以根据大小信息来判断是否接受到了完整的文件。而在 服务器端,在发送数据时就要首先发送实际文件的大小信息,但是,文件的大小一开始是无法预知的,所以先使用了out<< (quint16) 0;在block的开始添加了一个quint16大小的空间,也就是两字节的空间,它用于后面放置文件的大小信息。
然后 out<seek(0);返回到block的开 始,加入实际的文件大小信息,也就是后面的代码,它是实际文件的大小:out<<(quint16) (block.size() – sizeof(quint16));




你可能感兴趣的:(总结)