Java 如何";“部署”;一个可以通过互联网访问的服务器?

Java 如何";“部署”;一个可以通过互联网访问的服务器?,java,android,Java,Android,我最近开发了一个Android应用程序,Android设备可以与运行该应用程序的另一个Android设备进行通信。 通信是通过套接字进行的,因此我开发了一个在我的计算机上运行的服务器 我的问题是: 只要所有设备以及PC都在同一局域网内(例如,通过同一路由器连接),我的PC上运行的服务器上的设备之间的通信工作正常 现在我想让服务器在线,这样Android设备就可以连接到“在线”服务器,并通过服务器在任何地方相互通信 我根本不知道如何让服务器在线并运行。我该怎么做 主要问题是,我知道本地的客户机/服

我最近开发了一个Android应用程序,Android设备可以与运行该应用程序的另一个Android设备进行通信。 通信是通过套接字进行的,因此我开发了一个在我的计算机上运行的服务器

我的问题是:

只要所有设备以及PC都在同一局域网内(例如,通过同一路由器连接),我的PC上运行的服务器上的设备之间的通信工作正常

现在我想让服务器在线,这样Android设备就可以连接到“在线”服务器,并通过服务器在任何地方相互通信

我根本不知道如何让服务器在线并运行。我该怎么做


主要问题是,我知道本地的客户机/服务器通信,但在“在线”领域没有经验。

与其说是编程问题,不如说是网络问题。您的服务器打开一个套接字,因此任何能够访问该套接字的人都可以访问该套接字

您必须在路由器上执行重定向。问题是你的机器没有公共IP,只有你的路由器有一个。因此,当您的路由器在端口21上接收到数据包时,它不知道如何处理它。您必须将其配置为“端口21必须重定向到本地IP XXX”


此外,您的调制解调器/路由器的公共IP也可以更改,具体取决于您的ISP。如果您有固定的IP,它不会改变,否则您将不得不安装像dyndns这样的软件,以使域名与您的IP关联。

对于生产,您需要租用具有公共IP的某个主机的服务。出于测试目的,只需从您当前的ISP购买公共IP。我强烈建议您雇用知道如何正确操作的人。否则你可能会被黑客攻击quickly@VictorSorokin你可能根本不需要这个。一个足够好的无线路由器可以向DynDNS或类似服务注册您的IP,并保持此信息最新。(如果你真的想在你自己的硬件上托管。虽然足够好的托管足够便宜,但在这种情况下你不能使用自定义服务器软件。)在静态IP上也会有帮助好的,谢谢。例如,是否有可能通过使用免费的webhoster或类似的东西使服务器联机?当我这样做的时候,我需要考虑什么?网络卷扬机不会让你打开一个随机端口。更好的做法是开发一个可从端口80访问的web服务。另外,在Java世界中,很难找到免费的东西来托管你的应用程序,特别是对于你的需要。这意味着开发一个Web服务,例如使用JAX-WS实现服务器?例如是的。当您正在寻找一个兼容的web主机时,使用标准进行开发会有很大帮助