Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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 在专用IP地址上托管服务器_Java_Sockets_Networking_Ip Address_Router - Fatal编程技术网

Java 在专用IP地址上托管服务器

Java 在专用IP地址上托管服务器,java,sockets,networking,ip-address,router,Java,Sockets,Networking,Ip Address,Router,用Java编写的服务器应用程序将托管在路由器提供的IP地址上。即使服务器没有公共IP,只有路由器使用NAT转换提供的IP地址,客户端如何从任何地方连接到服务器?您需要在路由器上配置端口转发 来自“任何地方”的客户端将通过其公共IP地址和用于应用程序的端口(或其他端口,但需要定义的端口)连接到路由器 路由器将使用其端口转发配置查找IP地址,并将某个端口上的传入连接转发到该端口 然后,路由器建立与服务器的连接 让服务器在路由器后面使用NAT的一个缺点是,如果您想使用https连接,它会变得复杂。如果

用Java编写的服务器应用程序将托管在路由器提供的IP地址上。即使服务器没有公共IP,只有路由器使用NAT转换提供的IP地址,客户端如何从任何地方连接到服务器?

您需要在路由器上配置端口转发

  • 来自“任何地方”的客户端将通过其公共IP地址和用于应用程序的端口(或其他端口,但需要定义的端口)连接到路由器
  • 路由器将使用其端口转发配置查找IP地址,并将某个端口上的传入连接转发到该端口
  • 然后,路由器建立与服务器的连接

  • 让服务器在路由器后面使用NAT的一个缺点是,如果您想使用https连接,它会变得复杂。

    如果您的路由器为您提供
    IP
    ,但
    NAT
    已启用,则它完全可以路由到。您可能需要更改一些设置,以便在某些端口和其他地方通过。我不明白为什么像u torrent这样的软件可以在不手动配置端口转发的情况下实现P2P通信?如果我错了,请纠正我,torrent类软件的目的是减少大量计算并节省带宽分配负载,使每个人都在播种数据,而不是一台服务器,如果它实现了所有数据都通过主服务器的设计,那么P2P通信的意义何在?我的观点是,当有人在播种某些数据时,他们在一个由路由器分配给他们的IP上充当一个微型服务器。P2P软件不能在没有帮助的情况下通过NAT路由器。此帮助可能是端口转发或允许UPNP配置的路由器,通过中央服务器或其他对等服务器进行中继,或反转连接。我发现了Cling-Java/Android UPNP库和工具,这是否意味着可以通过编码自动解决此问题,或手动解决此问题是唯一的方法,有什么想法吗?你可以为一些用户解决这个问题。而且它工作得很好,因为大多数路由器都支持UPnP,但这并不是总能工作的,因为拥有更多技术知识的用户经常停用UPnP,因为他们不希望任何软件能够改变他们的转发。