我正在编写语音聊天应用程序,但问题是当客户端使用路由器防火墙阻止连接时
我用tcp连接解决了这个问题但是用udp连接我不知道怎么能解决这个问题
我通过这一步尝试udp hole
但是这项工作有一段时间,很多时候没有用,我不知道为什么。 任何帮助。
答案 0 :(得分:3)
你正在尝试的是UDP洞打孔。但很少有具有对称NAT,打孔的路由器非常困难且不一致(如果可能)。阅读维基百科上的不同NAT,您将获得更多洞察力。
答案 1 :(得分:3)
NAT穿透需要外部“匹配”服务器,并且可以在所有BUT非对称路由器和防火墙上使用。简单地说,这些“对称”路由器每次更改目标的IP或PORT时都会更改数据的出站/入站端口,从而有效地使服务器尝试执行的“匹配”无效。
还有其他“狡猾”的做法,但他们缺乏连贯性。
我建议你阅读有关NAT类型(不对称,对称,全锥,限制锥,端口重构锥)的差异。另外,请确保您阅读了有关STUN的信息,它允许您识别客户端正在运行的NAT类型。最后,您应该阅读UPnP这是大多数路由器所具有的功能,并允许程序自行注册和打开端口,而无需用户通过路由器接口手动执行此操作。