我目前正在 VisualBasic.NET 中的一个项目上工作,并且正在使用原始套接字来构建我的数据包以通过套接字发送。这是因为我必须在 IP 数据包的标头中设置服务类型字段,这在现代版本的 Windows 中使用 Winsock 是不可能的。我不能使用 Diffserv,因为应用程序正在与之通信的嵌入式设备要求我使用完整的 TOS 字段。
当前的代码实现相当简单并且运行良好 - 但仅在 Windows 8 中运行。如果代码在任何其他 Windows 操作系统(XP 或 7)上运行,则 TOS 字段无论如何都会被覆盖为 0(需要设置对于我正在使用的设备,设置为 2)。
我已经在整个互联网上寻找有关此的提示,并发现了几个注册表更改(所有这些我都试图无济于事)以及组策略编辑。其中大部分用于启用在 Winsock 中设置 TOS 字段的功能,该功能仅适用于 XP。
我被引导相信这个问题是由 Windows 操作系统的网络层设置中的一些变化引起的,但很难准确指出发生了什么变化。
任何帮助,将不胜感激。