Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从本地网络外部访问服务器_Java_Java Server - Fatal编程技术网

Java 从本地网络外部访问服务器

Java 从本地网络外部访问服务器,java,java-server,Java,Java Server,我有一个用Java编写的服务器,它基本上等待来自不同客户机的请求,并为他们的请求提供服务。我正在从Eclipse运行此服务器。此服务器可以在本地网络上访问,但我希望能够从本地网络外部访问此服务。请问有什么办法吗 顺便说一句,我是这些方面的真正初学者您可以在路由器中打开一个端口,该端口指向服务器正在侦听的端口。然后连接到公共IP。此ip可以是您也可以下载类似Hamachi的内容,然后下载Hamachi并在其他PC和Mac(以及Linux…目前处于测试阶段)上登录到您的网络。然后,您将希望能够访问上

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


顺便说一句,我是这些方面的真正初学者

您可以在路由器中打开一个端口,该端口指向服务器正在侦听的端口。然后连接到公共IP。此ip可以是

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


正如@Java Player所说,问题在于您的路由器(Nat)拒绝向您的本地网络发送任何传入数据包……简单地说,有很多解决方案:

  • 第三方服务器:您必须有一台专用服务器,在客户端/服务器程序之间起中介作用

    优点:

    • 彻底解决与Nat相关的问题
    缺点:

    • 除了您的客户机之外,您还必须对另一个将数据包转发到所需目的地的第三方进行编码

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

  • :服务器和客户端程序是反向的,这意味着客户端变成服务器,服务器变成客户端,“被大多数特洛伊木马程序使用

    优点:

    • 这种方法很容易实现
    缺点:

    • 您必须至少有一个已打开的端口
  • :此方法可能适用于所有对等解决方案(例如:skype、utorrent…)

    优点:

    • 您不需要进行任何路由器配置
    • 对等点之间的直接连接
    缺点:

    • 您还需要一个名为
      STUN server
      的第三方服务器来获取有关路由器的信息
    • 并非所有使用UDP穿孔的路由器,也必须考虑第一个解决方案。
    • 编写打孔解决方案并非易事

  • 确保您的计算机具有可从外部访问的IP地址,并且防火墙允许外部计算机在您的服务器侦听的保护上访问此IP。有两个主要问题超出了stackoverflow的范围。防火墙和NAT。如果你还有问题的话,我会考虑这些问题,并考虑在超级用户上发布。