首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Windows Server 2012 R2中缺少srflx ice候选

Windows Server 2012 R2中缺少srflx ice候选
EN

Stack Overflow用户
提问于 2020-01-21 11:53:06
回答 2查看 456关注 0票数 0

我的一个webrtc应用程序在我测试的所有PC上都运行得很好,甚至是虚拟机,但它在Windows Server2012 R2上不起作用。我追踪到服务器上缺少服务器自反(srflx)候选服务器。

使用这段测试代码(在chrome dev控制台上运行它):

代码语言:javascript
运行
复制
var rtc = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
var r = new rtc({ iceServers: [{ urls: "stun:stun.l.google.com:19302" }] }, {});
r.onicecandidate = function (a) { console.log('candidate:', JSON.stringify(a.candidate)); };
r.onicecandidateerror = function(a) { console.log('error:', a); }
r.createDataChannel("");
r.createOffer().then(x);

function x(a) {
    r.setLocalDescription(a, function () {}, function () {});
}

在我的PC上,它显示了如下内容:

代码语言:javascript
运行
复制
candidate: {"candidate":"candidate:1221703924 1 udp 2113937151 a044b6a7-4d08-XXXX-XXXX-bc858326ac0f.local 59233 typ host generation 0 ufrag IYpO network-cost 999","sdpMid":"0","sdpMLineIndex":0}
candidate: {"candidate":"candidate:842163049 1 udp 1677729535 111.222.333.444 59233 typ srflx raddr 0.0.0.0 rport 0 generation 0 ufrag IYpO network-cost 999","sdpMid":"0","sdpMLineIndex":0}
candidate: null

但在服务器上,它看起来像这样:

代码语言:javascript
运行
复制
candidate: {"candidate":"candidate:3704228534 1 udp 2113937151 e277d76d-XXXX-XXXX-9471-3461192326ad.local 50857 typ host generation 0 ufrag WWDW network-cost 999","sdpMid":"0","sdpMLineIndex":0}
candidate: null

是什么原因导致srflx候选丢失?使用带有凭证的turn服务器而不是stun来做同样的事情。也尝试关闭windows防火墙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-31 09:38:00

这里也是一样。您的问题可能是udp通信被阻塞,但我的问题是在运行本地STUN服务器时中间没有NAT。使用MDNS解析无意义的候选主机。因为它与srflx候选的ip相匹配,所以它被丢弃。如果您在本地网络上,无法解析MDNS,则需要中继,这是垃圾。我的内网ip地址是10.43.212.107。全世界都可以拥有它。我才不会管一只会飞的猴子。MDNS是垃圾!

5.1.3。消除多余的候选者

接下来,ICE代理(发起和响应)消除多余的候选对象。两个候选人可以有相同的交通地址,但不同的基地,这将不会被认为是多余的。通常,当代理不在NAT之后时,服务器自反候选和主机候选将是冗余的。当且仅当一个候选者的传输地址和基地址等于另一个候选者的传输地址和基地址时,该候选者是冗余的。智能体应该剔除优先级较低的冗余候选。

票数 0
EN

Stack Overflow用户

发布于 2020-01-21 19:43:50

这通常意味着UDP在该机器上被阻塞( onicecandidateerror回调可能提供更多洞察)。

https://bloggeek.me/turn-public-ip-address/很好地总结了为什么除了TURN/UDP之外还需要转向/TCP和TURN/TLS。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59833954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档