怎么在应用层控制数据包的优先级
如何在应用层控制数据包的优先级自己写的一个简单的CS通讯框架,客户端能够发出高、低两种优先级数据包,低优
如何在应用层控制数据包的优先级
自己写的一个简单的CS通讯框架,客户端能够发出高、低两种优先级数据包,低优先级包定时发送,高优先级包随机发送。
要求服务端收到高优先级包时首先处理高优先级包,待所有的高优先级包处理完毕之后,再对低优先级包进行处理。
求教各位如何实现?
[解决办法]
在IP4中,暂时没有数据优先级的支持,唯一一个优先级的问题是TCP的带外数据方式,但那个数据信息太少,根本不适合应用使用。你可以用两个不同的端口来区分数据优先级。接收数据时,用select来监听两个socket,一旦有数据来,你先判断高优先级的socket处理。
[解决办法]
简单的话。你用两个队列,队列1和队列2,分别存客户端发过来的高优先级包和低优先级包。
队列1不为空,就只取队列1的处理;
队列1为空,才取队列2的处理;
如此 循环,就可以了啊
- 千里孤行
[解决办法]同意3楼做法。
不过2楼说IP没有优先级,这个是不是有问题?IPv4头里的TOS就是优先级啊
[解决办法]认真看看官方说明吧,IPv4头里的TOS就是优先级,但是现在几乎没有几个支持TOS,在一些新的路由器上才支持,而客户主机上基本没有支持的。
把数据先接收了,转存到一个缓冲的作法基本不可取。作者的目的实质上是想实现接受数据的优先级,而不是转存后的数据优先级。以CPU的处理速度,网络传输速度,远远小于CPU的处理,我们基本可以不考虑数据转存的时间消耗。而且数据转存方式,无谓的浪费了转存的空间和队列的消耗。