搜索
bottom↓
回复: 2

请教服务器接收客户端发来的数据的处理方法?谢谢!

[复制链接]

出0入0汤圆

发表于 2019-4-26 21:01:28 | 显示全部楼层 |阅读模式
我用qt做个服务器,用来接收客户端连接上来的连接,以及保存客户端发来的数据帧。这里有几个问题,请教一下大神。
1.由于客户端连接上来的并不知道会有多少个连接,那么这个接收缓冲区需要怎么设定?
2.由于网络传输等原因,有没有可能一个数据帧被拆分成了2次或者更多次才传回到服务器,那么这里是否需要做比如收到一个客户端数据时但是还未完成时,是否需要启动个定时器做超时处理?
3.这个网络数据处理是否需要把它转存到一个环形缓冲区这样的方式来处理呢?还是可以设置只需要冲网络套接字里读出几个字节,缓存由tcp这块来做

由于没有搞过这方面的,特来请教,谢谢!

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入8汤圆

发表于 2019-4-26 22:01:48 | 显示全部楼层
1. 根据处理能力设置最大连接数,由此确定缓存大小
2. 采用TCP传输不用管这个问题,协议栈已经处理了。如果是其它不带流控的协议,需要自己处理。你说的一帧分多次收到,这叫粘包问题,需要自己在应用层加协议处理
3. 网络数据缓存操作系统底层已经处理了,应用层只要从底层取数据处理就行了。

出0入0汤圆

 楼主| 发表于 2019-4-27 11:09:20 | 显示全部楼层
canspider 发表于 2019-4-26 22:01
1. 根据处理能力设置最大连接数,由此确定缓存大小
2. 采用TCP传输不用管这个问题,协议栈已经处理了。如果 ...

非常感谢解答。
还有个问题请教,比如应用层协议里数据帧里包含:HEAD+数据长度+SUM+END,比如先收到了A帧数据的HEAD+数据长度,然后这A帧的数据就丢失了,那么就会一直读不到剩下的数据了,直到下一B帧数据发过来了,才会凑足上一帧的数据长度,但是这样校验也许就会通不过了。
这时的处理方式一般会以什么样的方式来处理呢。比如如果放入环形缓冲区中的话,就会把A帧的原来的HEAD丢弃一个,再来重新计算,这样就不会有导致后面由于错位的原因一直解析不正确的事情,但是这样处理速度会比较慢,请教一下,一般是怎么处理这样的情况的?谢谢!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 19:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表