C++ 无法在windows中使用setsockopt设置通信类(IPV6_TCLASS)

C++ 无法在windows中使用setsockopt设置通信类(IPV6_TCLASS),c++,ipv6,winsock,winsock2,C++,Ipv6,Winsock,Winsock2,我试图在Windows中设置IPV6\u TCLASS,但由于某种原因,我收到了一个WSAENOPROTOOPT错误(“getsockopt或setsockopt调用中指定了未知、无效或不受支持的选项或级别”) 下面是设置IPV6类的代码: const int trafficClass = 232; if (setsockopt(sock, IPPROTO_IPV6, IPV6_TCLASS, &trafficClass, sizeof(int)) < 0) { //some

我试图在Windows中设置
IPV6\u TCLASS
,但由于某种原因,我收到了一个
WSAENOPROTOOPT
错误(“getsockopt或setsockopt调用中指定了未知、无效或不受支持的选项或级别”)

下面是设置IPV6类的代码:

const int trafficClass = 232;
if (setsockopt(sock, IPPROTO_IPV6, IPV6_TCLASS, &trafficClass, sizeof(int)) < 0) 
{
  //some code
}
const int trafficClass=232;
if(setsockopt(sock、IPPROTO_IPV6、IPV6_TCLASS和trafficClass、sizeof(int))小于0)
{
//一些代码
}

您给出了什么错误?是否检查WSAGetLastError()值?@Samini我使用GetLastError()在事件查看器中记录错误。记录的错误为getsockopt或setsockopt调用中指定了未知、无效或不受支持的选项或级别。您试图为流量类使用的具体值是什么?这是一个八位字段,前六位是以
0
结尾的DS值,最后两位是ECN。并非所有可能的DS值都有效。您的
111 010
值似乎无效,最接近的是CS7(
111 000
)。我正在尝试设置值232(0xe8),该值为11101000,它不是有效的DS值。我的意思是,你想要一个CS值(1到7),一个AF值(AF11,AF12,AF13,AF21,AF22,AF23,AF31,AF32,AF33,AF41,AF42,AF43),或者类似BE或EF的东西吗?你想从中得到什么?例如,AF值通常具有更高的优先级和更高的第一位数字,但是更可能被更高的第二位数字丢弃,尽管路由器可以被配置为以不同的方式执行。