我正在开发一个程序,该程序需要能够雄辩地处理防火墙,同时允许2个客户端之间进行直接通信。我正在考虑类似于Skype的事情,其中使用第三方在两个用户之间建立连接,但是一旦建立连接,实际的数据就不会发送到第三方。我知道几乎所有的防火墙都会阻止所有未经请求的传入流量,但是只要内部程序是第一个进行通信的程序,就可以很容易地让程序建立连接。我不明白的是如何直接在两个客户端之间建立连接。我如何实现这样的东西?对于这种技术有什么适当的术语?一个客户端必须用Java编写,但是服务器和其他客户端几乎可以使用我想要的任何语言。如果已经问过这个问题,我先向您道歉,我尝试环顾四周,但是我觉得我可能没有使用正确的关键字来查找它。 最佳答案 我认为您要查找的术语是“ NAT traversal”。它与防火墙有关,而与克服到达NAT设备的另一(专用)侧上的特定节点(例如,电缆调制解调器等)的困难有关,例如,通常为LAN侧分配一些不可路由的地址范围,例如)UDP hole punching是一种可能对您有用的技术。每个端点都可以建立到第三方服务器的传出连接,并且每个端点处的NAT设备将打开端口,以允许通过防火墙的返回流量并将其路由到两端的适当LAN节点。端点通过第三方服务器交换端口信息,然后重新使用它们刚刚通过NAT设备“打孔”的“漏洞”,从此以后直接相互通信。关于java - 使用第三方建立连接绕过防火墙,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5725899/ 10-10 15:02