如何使用setsockopt将ToS添加到流中?

如何使用setsockopt将ToS添加到流中?,c,sockets,stream,sip,C,Sockets,Stream,Sip,首先,我经常在谷歌上搜索,这是我最后的选择 我将Linphone SIP开源用于Windows 7,并尝试使用不同于0的ToS发送音频/视频流 守则的有关部分: retval = setsockopt(session->rtp.socket, proto, value_type, (SOCKET_OPTION_VALUE)&tos, sizeof(tos)); if (retval==-1) ortp_error("Fail to set D

首先,我经常在谷歌上搜索,这是我最后的选择

我将Linphone SIP开源用于Windows 7,并尝试使用不同于0的ToS发送音频/视频流

守则的有关部分:

retval = setsockopt(session->rtp.socket, proto, value_type, (SOCKET_OPTION_VALUE)&tos, sizeof(tos));
        if (retval==-1)
            ortp_error("Fail to set DSCP value on rtp socket: %s",getSocketError());
        if (session->rtcp.socket != (ortp_socket_t)-1){
            if (setsockopt(session->rtcp.socket, proto, value_type, (SOCKET_OPTION_VALUE)&tos, sizeof(tos))==-1){
                ortp_error("Fail to set DSCP value on rtcp socket: %s",getSocketError());
            }
        }
我成功了,a.e
retval
不是
-1
。然而,从wireshark我仍然看到Tos=0

是否有人知道解决方法,或者我需要通过命令行通过“gpedit.msc”手动创建组策略?

如果您想从Microsoft获得“最新和最好的”QOS故事,您需要查看。qWave的问题是API只占了一半。qWave允许您为windows本身“标记”tcp流类型(视频、语音等),然后网络管理员可以创建如何处理它。此外,默认情况下,qWave不会安装在服务器操作系统上。qWave无法在网络数据包中设置特定的DSCP位,这些位由数字生活网络联盟(DLNA)和WiFi联盟无线多媒体(WMM)规范定义

如果您需要设置特定的DSCP位,您唯一的选择就是使用旧的和不推荐使用的API。

如果您想从Microsoft获得“最新和最好的”QOS故事,您需要查看。qWave的问题是API只占了一半。qWave允许您为windows本身“标记”tcp流类型(视频、语音等),然后网络管理员可以创建如何处理它。此外,默认情况下,qWave不会安装在服务器操作系统上。qWave无法在网络数据包中设置特定的DSCP位,这些位由数字生活网络联盟(DLNA)和WiFi联盟无线多媒体(WMM)规范定义


如果您需要设置特定的DSCP位,您唯一的选择是使用旧的和不推荐使用的API。

WSAGetLastError值告诉您什么?请参阅我的编辑,我没有得到任何错误,因为TOS字段基本上未使用。实际上很少有路由器对它采取任何行动。也许吧,但在我的情况下,会有70%的数据包丢失。WSAGetLastError值告诉你什么?请看我的编辑,我没有收到任何错误。因为它的价值,TOS字段基本上是未使用的。实际上很少有路由器对它采取任何行动。也许吧,但在我的例子中,由于这个原因,会有70%的数据包丢失