在 Windows 平台上面,目前有两个办法来调整应用程式的 QoS 策略设置,一种是通过程式设置,一种是通过 “Windows 组策略控制”。
在阅读本文之前,您需要先查阅本人以下的几篇文献,作为前情提示:
VC++ Windows 平台通过QOS2库函数设置Socket DSCP(IP_TOS)参数选项_udp可以打dscp吗-CSDN博客
Windows TCP/IP客户端模式,网络吞吐优化_ctcp cubic-CSDN博客
C/C++ 设置Socket的IP_TOS选项_socket修改tos-CSDN博客
在 Windows 平台,自进入 Windows Vista / Windows 2008 Server 开始就不允许用户通过,标准SOCKET API 接口来设置链路 QOS 策略了,但 Vista/7/2008/8 好歹对系统注册表解禁重启,还能用,但是 Windows 2012 RC2、Windows 8.1(build 9200)开始根本就不行,只能通过 QoS2 接口调用来设置。
但直到今天,我都没搞明白UDP/IP,按照文档应当如何对具体进程SOCKET资源设置,当然是知晓 TCP/IP,链路QOS2接口怎么使用。
但是让程序自己去调用系统的接口太麻烦了,操作系统本来就提供了对应的QOS策略管理的操作面板,点几下就能解决问题,何必要这么闹腾,还得改服务器程序的网络实现代码结构。
高级 QoS 策略配置步骤:
1、以管理员身份运行 cmd
2、运行 gpedit 命令打开 Windows 组策略控制窗口(MMC)
3、点击 Windows 设置项
4、点击基于策略的 QoS
5、右键高级 QoS 策略
6、
7、
8、右键基于策略的 QoS -> 新建策略
9、策略命随便写,DSCP值(0~63)写 26 就可以(它就是:FLASH 报文优先级)
10、写你的EXE服务器程序的全文件路径(Full Exe Path)
11、这个默认就OK,有需要自己调。
12、有TCP+UDP就选这个,没得选TCP或者UDP,点完成。
上面就配置完了就立即生效了,不放心就重启下服务器程序,怎么验证是否有效果,在服务器上面打开抓包工具,如:“Wireshark”
比如下面这样:
TOS为 0x68 它就相当于DSCP值为26的效果,FLASH报文。