3

我正在编写语音聊天应用程序,但问题是客户端使用路由器防火墙阻止连接时

我用 tcp 连接解决了这个问题,但是用 udp 连接我不知道如何解决这个问题

我通过这一步尝试 udp 漏洞

  1. 客户端 A 发送到(服务器)ip 和用户名
  2. 客户端 B 发送到(服务器)IP 和用户名
  3. (服务器)发送到客户端 B 客户端 A 信息 — 开始语音聊天
  4. (服务器)向客户端 A 客户端 B 发送信息 — 开始语音聊天

但是这项工作一次很多次都不起作用,我不知道为什么。任何帮助。

4

2 回答 2

3

NAT 穿透需要外部“匹配”服务器,并且可以在所有但非对称路由器和防火墙上使用。简单地说,这些“对称”路由器会在您每次更改目标的 IP 或端口时更改数据的出站/入站端口,从而有效地消除服务器试图进行的“匹配”。

还有其他“狡猾”的打孔方法,但它们缺乏连贯性。

我建议您阅读有关 NAT 类型(不对称、对称、全锥、受限锥、端口受限锥)的差异。还要确保您阅读了 STUN,它可以让您识别客户端运行的 NAT 类型。最后,您应该阅读有关 UPnP 的信息,这是大多数路由器都具有的功能,它允许程序自行注册和打开端口,而无需用户通过路由器界面手动执行此操作。

于 2013-01-06T14:43:43.843 回答
3

您正在尝试的是 UDP 打孔。但是很少有具有对称 NAT 的路由器,打孔非常困难且不一致(如果可能的话)。在维基百科上阅读不同的 NAT,您将获得更多见解。

于 2012-11-13T06:22:40.897 回答