Qt网络编程out和in函数的意思的用法 30

现在学习Qt的网络编程,下载了一个实例。有代码看不懂QDataStreamout(&block,QIODevice::WriteOnly);out<<(quint16)0... 现在学习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呢,不是得有两个参数吗?

我是新手,求指导,不胜感激!!!
展开
 我来答
百度网友74e2505d9e8
2015-10-25 · TA获得超过1.2万个赞
知道小有建树答主
回答量:1965
采纳率:92%
帮助的人:151万
展开全部
这是声明的QDataStream 的对象,代码自己声明的,并不是预定义的。它是一个流对象,你可以查看QDataStream 的文档,继承自QIODevice,QDataStream out(&block,QIODevice::WriteOnly);这一句声明了out是一个QDataStream 对象,将声明QByteArray的实例block最为存储缓冲区,模式为只写。 同样你去看代码in是一个只读流,将socket中的数据读出来的功能。in>>的意思是读出到blocksize中。
和iostream很像,out和in都和网络模块没任何关系。
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的开 始,加入实际的文件大小信息,也就是后面的代码,它是实际文件的大小:out<<(quint16) (block.size() – sizeof(quint16))。
天蝎神经侠侣
高粉答主

2015-09-05 · 关注我不会让你失望
知道大有可为答主
回答量:7533
采纳率:67%
帮助的人:715万
展开全部
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的开 始,加入实际的文件大小信息,也就是后面的代码,它是实际文件的大小:out<<(quint16) (block.size() – sizeof(quint16));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友75967b7
推荐于2017-11-25 · TA获得超过1229个赞
知道小有建树答主
回答量:467
采纳率:100%
帮助的人:538万
展开全部
你把代码贴全好不好啊,这是声明的QDataStream 的对象,代码自己声明的,并不是预定义的。它是一个流对象,你可以查看QDataStream 的文档,继承自QIODevice,QDataStream out(&block,QIODevice::WriteOnly);这一句声明了out是一个QDataStream 对象,将声明QByteArray的实例block最为存储缓冲区,模式为只写。 同样你去看代码in是一个只读流,将socket中的数据读出来的功能。in>>的意思是读出到blocksize中。
和iostream很像,out和in都和网络模块没任何关系。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-28
展开全部
out 就是输出,即发送
in 是输入 , 即接收

接收 缓存,不会有最终的数据的大小的,只会有当前缓存的数据的大小。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
苯苯苯糖
2013-04-28 · TA获得超过118个赞
知道小有建树答主
回答量:210
采纳率:100%
帮助的人:117万
展开全部
一个是输出 一个是写入
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式