2

我在我的服务器应用程序中使用 libjitsi / ice4j 并想在调用Agent.startConnectivityEstablishment()之前修改我的本地候选人,有没有办法修改优先级或任何其他属性以强制一个候选人优先于另一个?例如,我最终得到了这些本地候选人:

default candidate: candidate:1 1 udp 2130706431 192.168.122.15 5000 typ host
candidate:1 1 udp 2130706431 192.168.122.15 5000 typ host
candidate:2 1 udp 1694498815 24.234.1.1 5000 typ srflx raddr 192.168.122.15 rport 5000

我需要选择srflx候选人而不是主机候选人,因为它使用专用网络地址并且无法从网络外部访问。

这两个库都没有很好地记录,并且似乎有问题的对象缺乏变异器,所以任何帮助都将不胜感激。

4

1 回答 1

1

您是否发现正在使用 srflx 而不是主机?我只能想象 ICE4J 会在可行的情况下选择主机。我注意到我的检查并在主机上失败,否则它会选择它。不过我可以再检查一次。

您可以查看本教程以查看它是否有帮助:stellarbuild.com/blog/article/ice4j-networking-tutorial-part-1

说实话,如果你使用 SDP 修改会更容易,因为你可以手动尝试一些字符串比较的技巧,但这是有风险的。也许两个本地网络都使用 192.168.1.* 但位于不同的网络上。因此,假设 srflx 相同并且本地主机字符串开始相同,您可以删除 srflx 并强制它尝试主机。

我会仔细检查,但我认为它会自动优先考虑主机。

于 2015-05-04T12:52:09.310 回答