【问题标题】:How to use a server for redirecting clients to direct connecting to each other如何使用服务器重定向客户端以直接相互连接
【发布时间】:2014-12-26 21:39:19
【问题描述】:

我希望能够在不打开路由器端口或在本地网络上转发的情况下将 (java) 客户端相互连接。我想模仿 webtrc 的行为,但在 java 中,使用服务器进行信号传输。服务器必须从想要相互连接的两个客户端接收会话密钥,将第一个客户端密钥发送给第二个客户端,反之亦然。信令后,两个客户端可以使用此密钥相互连接,数据包将通过路由器找到自己的方式,而无需打开端口和转发。

我们的目标是为此创建一个框架,以便能够编写不需要具有巨大带宽的服务器的应用程序,该服务器可以从一个客户端读取并写入另一个客户端,对于想要发送的每一对客户端数据相互。我要求的只是可以实施的指导方针。

TLDR:我希望能够在公共服务器的帮助下直接连接两个完全不同的网络中的两个客户端,而无需为客户端配置任何路由器。

【问题讨论】:

    标签: java sockets server


    【解决方案1】:

    这种技术称为打孔

    “打孔是一种计算机网络技术,用于在位于限制性防火墙之后的不同组织中的双方之间建立通信。用于在线游戏、P2P 和 VoIP 等应用程序,两个客户端都与不受限制的第三方建立连接为他们发现外部和内部地址信息的服务器。由于每个客户端都向服务器发起了请求,因此服务器知道他们为该会话分配的 IP 地址和端口号,并将它们共享给另一个。来自维基百科

    也看看这个answer

    【讨论】:

    • 感谢您的回答。自从您发表评论并尝试实现以来,我已经阅读了很多关于打孔的内容,但即使我在服务器和服务器套接字的套接字上都使用 setReuseAddress(true),我得到“java.net.BindException:地址已经在在第二个绑定上使用”。你回答了我的问题,谢谢。我将为我的实现错误创建另一个问题。
    猜你喜欢
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 2013-05-24
    相关资源
    最近更新 更多