jaky80000 发表于 2019-4-26 21:01:28

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

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

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

canspider 发表于 2019-4-26 22:01:48

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

jaky80000 发表于 2019-4-27 11:09:20

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

非常感谢解答。
还有个问题请教,比如应用层协议里数据帧里包含:HEAD+数据长度+SUM+END,比如先收到了A帧数据的HEAD+数据长度,然后这A帧的数据就丢失了,那么就会一直读不到剩下的数据了,直到下一B帧数据发过来了,才会凑足上一帧的数据长度,但是这样校验也许就会通不过了。
这时的处理方式一般会以什么样的方式来处理呢。比如如果放入环形缓冲区中的话,就会把A帧的原来的HEAD丢弃一个,再来重新计算,这样就不会有导致后面由于错位的原因一直解析不正确的事情,但是这样处理速度会比较慢,请教一下,一般是怎么处理这样的情况的?谢谢!
页: [1]
查看完整版本: 请教服务器接收客户端发来的数据的处理方法?谢谢!