You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下如何通过编程为网络套接字设置TOS/DSCP标记?

如何通过C#编程为UDP套接字设置TOS/DSCP标记

我尝试用C#给UDP数据包标记Type of Service(TOS)/DSCP字节,当前的实现代码如下:

UdpClient udpClient = new UdpClient();

string ipAddress = "xxx.xxx.xxx.xxx";
int port = 3999;

udpClient.Connect(ipAddress, port);

udpClient.Client.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.TypeOfService, 8);
Console.WriteLine(udpClient.Client.GetSocketOption(SocketOptionLevel.IP, SocketOptionName.TypeOfService)); // 输出值为8

udpClient.Send(Encoding.ASCII.GetBytes("Hello World!"));

udpClient.Close();

虽然控制台输出显示TOS设置成功(返回值为8),但用Wireshark捕获到的数据包DSCP值始终是0。我已经尝试过以下注册表修改:

  • 在Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\QoS路径下,将Do not use NLA的DWORD值设为1
  • 在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters路径下,将DisableUserTOSSetting的DWORD值设为0
  • 在组策略编辑器中修改“高级QoS设置”,允许应用程序覆盖策略设置

我需要的是纯编程实现的解决方案,不需要用户手动修改组策略,方便通过程序UI进行控制。

内容的提问来源于stack exchange,提问作者jlwilson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 02:44:56