社区
其他技术讨论专区
帖子详情
tcpsocket readall(),是阻塞的吗?如果不是,如何判断读全了?
weixin_38058660
2019-09-19 12:04:50
write是不是可以写任意字节?比如发送了20480字节,接受方readall()好像不能读全啊?应该怎么读?
...全文
751
5
打赏
收藏
tcpsocket readall(),是阻塞的吗?如果不是,如何判断读全了?
write是不是可以写任意字节?比如发送了20480字节,接受方readall()好像不能读全啊?应该怎么读?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
weixin_38060006
2019-09-19
打赏
举报
回复
TCP 传输是数据流,无所谓全与不全要接受所有你发送的数据,需要靠你自己的协议来判断
weixin_38069120
2019-09-19
打赏
举报
回复
readall 这一步本身是阻塞的,但数据全不全不一定,你一定要自己继续readall,直到你认为完整了。
weixin_38082806
2019-09-19
打赏
举报
回复
谢谢楼上的回答!socket.write(qBytearray)一次好像只能write 65536左右字节吧,readall应该也如此吧
weixin_38087237
2019-09-19
打赏
举报
回复
首先你要读的数据长度你肯定知道,然后调用read(char *, qint64)函数读取数据,这个函数会返回已经读取的字节数。你不断的读取数据,每次读取后把读取到的长度累加起来,直到和你要读的数据长度一样就行了。当然还需要考虑超时问题,比如3s后超时,如果还没有读全认为读取失败了。
weixin_38088844
2019-09-19
打赏
举报
回复
readall不是阻塞的,它会直接返回当前收到的所有数据,所以你不能write后直接readall,甚至可能什么也收不到,因为这时候,对方可能还没发送,需要等待tcpsocket 的信号readyRead触发后在readall
golang
socket
tcp
ioutil.Re
adA
ll
阻塞
问题
注意:理论上con.Read和ioutil.Re
adA
ll
都是可以读取,但是ioutil.Re
adA
ll
要收到error或者EOF才会返回,也就是说如果发送端,发送数据后,调用 Close 关闭连接,不等待服务端的返回数据,服务端可 以用 ioutil.Re
adA
ll
来读取数据,这时可以
判断
出 EOF,读取结束。但如果客户端发送数据 后,没有关闭,而是等待服务端的数据返回,用 Re
adA
ll
是不行的,你们长连接交互的话,就用read。
Qt
TCP
通信re
adA
ll
()读取接收数据时无法读完大数据量的解决法案
在测试利用
TCP
传输图片的时候,服务器使用Qt的
TCP
类库。在
TCP
接收槽函数中使用re
adA
ll
()成员函数的时候发现re
adA
ll
()并不能读取全部的数据,比如,在客户端发送一张2MB的图像,但是使用re
adA
ll
()得到的QByteArray的大小并不是2MB。我经过测试,每次re
adA
ll
()返回的QByteArray的size是随机的。 Qt官方也是无语函数名起的贼不好
TCP
通信
socket
缓存读取
阻塞
tcp
通信——
socket
缓存读取
阻塞
TCP
通信过程,主要是数据的收发,最近一直在学习这方面的知识,其中有很多的细节部分确实是没有接触到,即便是一个小小的知识点,也会导致编程半天没有进展,需要查找很多的资料来解决这方面的问题,以下就来谈谈我在编程中所遇到的问题:
tcp
通信程序,包括服务器和客户端,程序编写完成后就会问题,调试的时候。我要进行的工作是把单片机当做服务器,计算机当做客户端来
记录
TCP
协议使用
Socket
连接,客户端请求服务器read()
阻塞
问题
如图:客户端与服务端连接不上,服务端处于
阻塞
状态: 首先,使用FileInputStream流输入文件,使用FileInputStream.read()方法读取文件返回int型; 其次,关于read()方法的介绍:Reads up to b.length bytes of data from this input stream into an array of bytes. This method blocks until some input is available; 表明read()方式是一个
阻塞
式
TCP
socket
和web
socket
的区别
小编先习惯性的看了下某中文百科网站对Web
Socket
的介绍,觉得很囧。如果大家按照这个答案去参加BAT等互联网公司的前端开发面试,估计会被鄙视。 还是让我们阅读一些英文材料吧。 让我们直接看stackoverflow上的原文,然后翻译: 原文地址: https://stackoverflow.com/questions/16945345/differences-between-
tcp
-so...
其他技术讨论专区
473
社区成员
791,201
社区内容
发帖
与我相关
我的任务
其他技术讨论专区
其他技术讨论专区
复制链接
扫一扫
分享
社区描述
其他技术讨论专区
其他
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章