java - 如何将服务器设置为 "deploy"以便可以通过 Internet 访问它?

标签 java android

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

这是我的问题:

只要所有设备和 PC 都在同一个 LAN 中(例如通过同一个路由器连接),我 PC 上运行的服务器上的设备之间的通信就可以正常工作。

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

我根本不知道如何让服务器联机运行。我该怎么做?

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

最佳答案

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

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

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

关于java - 如何将服务器设置为 "deploy"以便可以通过 Internet 访问它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13483760/

相关文章:

java - 如何在angularjs中读取pdf流

java - 我希望我的计时器在后台运行,但它一旦进入后台 android 就会停止

Android 谷歌地图去当前位置没有动画

android - 使用纬度和经度对创建 Google 位置 URL

android - 数字键盘 Ioinc2

java - CardLayout的卡片显示顺序是随机的吗?

java - java中的构造函数和get、set方法在一起

java - 如何将整个 View (水平和垂直滚动)保存为图像或pdf?

java - 如何在 HQL 中传递特殊字符?

java - Object[] 不能在 AsyncTask 中强制转换为 Void[]