Winapi QOSAddSocketToFlow返回错误-未找到元素
我正在使用QWAVE API设置数据包中的DSCP值 我尝试在服务器和客户端之间使用设置为46的DSCP位进行多个调用 对于每个调用,我必须将套接字添加到QOS流中,这是由Winapi QOSAddSocketToFlow返回错误-未找到元素,winapi,networking,packets,Winapi,Networking,Packets,我正在使用QWAVE API设置数据包中的DSCP值 我尝试在服务器和客户端之间使用设置为46的DSCP位进行多个调用 对于每个调用,我必须将套接字添加到QOS流中,这是由QOSAddSocketToFlow完成的 当某些调用的DSCP位设置不正确时,就会出现问题 此外,我发现对于那些调用QOSAddSocketToFlowAPI返回了一个错误代码: 未找到元素 如果在上指定为可能的返回代码,则此错误不存在 我正在使用QOS\u非自适应\u流量和流量类型作为Qostraffictypesteff
QOSAddSocketToFlow
完成的
当某些调用的DSCP位设置不正确时,就会出现问题
此外,我发现对于那些调用QOSAddSocketToFlow
API返回了一个错误代码:
未找到元素
如果在上指定为可能的返回代码,则此错误不存在
我正在使用QOS\u非自适应\u流量
和流量类型作为Qostraffictypestefforce
QoSResult = QOSAddSocketToFlow(
QoSHandle,
ConnectSocket,
sockaddr,
QOSTrafficTypeExcellentEffort,
QOS_NON_ADAPTIVE_FLOW,
&FlowId);
我想了解在什么情况下
QOSAddSocketToFlow
会抛出此错误代码。而且,并非所有电话都会出现这种情况,一些随机电话会出现这种错误。我想我的团队已经解决了这个问题
我们正在使用C#中的QWave API和自定义编写的pinvoke库,以便在单播udp、单播tcp和多播udp套接字上测试DSCP样式的QOS,并且我们也开始从Qosaddsockettolow中看到元素未发现错误
Qosadsockettoflow在大多数情况下都能工作,但在某些情况下,我们会出错
事实证明,QosAddSocketToFlow要求首先将套接字绑定到实际的源地址或INADDR_ANY
在我们的错误代码中,我们首先添加了qos:
if( this.dscpCodePoint != null && this.dscpCodePoint > 0 )
{
ApplyQosCodePoint( this.dscpCodePoint.Value );
}
this.socket.Bind( new IPEndPoint( this.sourceAddress, this.sourcePort ) );
虽然这通常是有效的,但它经常会导致多播套接字抛出元素\u NOT \u FOUND错误。我们只需切换语句的顺序,错误就消失了:
this.socket.Bind( new IPEndPoint( this.sourceAddress, this.sourcePort ) );
if( this.dscpCodePoint != null && this.dscpCodePoint > 0 )
{
ApplyQosCodePoint( this.dscpCodePoint.Value );
}
我想我的团队已经解决了这个问题 我们正在使用C#中的QWave API和自定义编写的pinvoke库,以便在单播udp、单播tcp和多播udp套接字上测试DSCP样式的QOS,并且我们也开始从Qosaddsockettolow中看到元素未发现错误 Qosadsockettoflow在大多数情况下都能工作,但在某些情况下,我们会出错 事实证明,QosAddSocketToFlow要求首先将套接字绑定到实际的源地址或INADDR_ANY 在我们的错误代码中,我们首先添加了qos:
if( this.dscpCodePoint != null && this.dscpCodePoint > 0 )
{
ApplyQosCodePoint( this.dscpCodePoint.Value );
}
this.socket.Bind( new IPEndPoint( this.sourceAddress, this.sourcePort ) );
虽然这通常是有效的,但它经常会导致多播套接字抛出元素\u NOT \u FOUND错误。我们只需切换语句的顺序,错误就消失了:
this.socket.Bind( new IPEndPoint( this.sourceAddress, this.sourcePort ) );
if( this.dscpCodePoint != null && this.dscpCodePoint > 0 )
{
ApplyQosCodePoint( this.dscpCodePoint.Value );
}
欢迎来到SO。请添加一些代码以帮助其他人重现您的问题。我们无法看到您的代码。发布一个帖子,这样我们就不用猜了。此外,如果您仔细阅读文档,您将看到它明确指出,该表显示了“一些可能的错误代码”。您的代码还需要准备好处理其他错误代码。使用更多信息更新了问题@IInspectable“并非所有调用都会发生这种情况,一些随机调用会出现此错误”-这是一个很好的迹象,表明代码中存在错误。代码,我们看不见。除非您提供答案,否则此问题将无效,并将作为非主题关闭。欢迎使用。请添加一些代码以帮助其他人重现您的问题。我们无法看到您的代码。发布一个帖子,这样我们就不用猜了。此外,如果您仔细阅读文档,您将看到它明确指出,该表显示了“一些可能的错误代码”。您的代码还需要准备好处理其他错误代码。使用更多信息更新了问题@IInspectable“并非所有调用都会发生这种情况,一些随机调用会出现此错误”-这是一个很好的迹象,表明代码中存在错误。代码,我们看不见。除非您提供,否则此问题将无效,并将作为非主题关闭。您能否共享ApplyQosCodePoint中使用的pinvoke代码?:)您能否共享ApplyQosCodePoint中使用的pinvoke代码?:)