2013-04-05 122 views
-1

我有一个用Java编写的服务器,它基本上等待来自不同客户端的请求并服务于他们的请求。我从Eclipse运行这个服务器。该服务器可在本地网络上访问,但我希望能够从本地网络外部访问此服务。请问有什么办法可以吗?从本地网络外部访问服务器

P.S.我是一个真正的初学者在这些东西

+1

确保你的机器是从外部访问的IP地址,防火墙可以让外面的机器访问您的服务器侦听PROT这个IP。 – 2013-04-05 22:30:59

+3

两种主要的问题都是在stackoverflow范围之外。防火墙和NAT。我会研究这些事情,并考虑发布在超级用户上,如果你仍然有问题。 – jedwards 2013-04-05 22:31:01

回答

3

你可以打开一个端口在路由器,导致服务器正在侦听。然后,您连接到您的公共IP。这个ip可以是found on

0

你也可以下载类似Hamachi的东西,然后下载Hamachi并在其他PC和Mac(以及目前处于测试阶段的Linux)上登录到你的网络。然后,您将希望能够访问您的服务器。

0

正如@Java球员说,问题是,你的路由器(NAT)否认有任何传入数据包到本地网络......简单地说,有许多解决方案这样的:

  1. 第三方服务器:你必须有个扮演一个专用服务器e中介的作用,在你的客户/服务器程序之间。

    优点:

    • 完全解决相关的NAT问题。

    缺点:

    • 除了你的客户,你必须编写其他第三方转发数据包到期望的目的地。

    • 顺便说一句,它有点沉重(浪费带宽)。

  2. Reversed connexion:服务器和客户端程序颠倒过来,这是指客户端成为一个服务器,服务器成为客户端,“被大多数的木马...

    优点:

    • 很容易实现这种方法。

    缺点:

    • 您必须至少有一个打开的端口。
  3. Udp hole punching:这种方法被所有peer2peer解决方案(例如:skype,utorrent ...)使用。

    优点:

    • 你不需要任何路由器的配置。
    • 对等体之间的直接连接。

    缺点:

    • 您还需要一个名为STUN server获得有关你的路由器信息第三方服务器。
    • 并非所有与udp打孔工作的路由器,你必须考虑第一个解决方案。
    • 编写打孔解决方案并不容易。
相关问题