【问题标题】:How to connect my Android app to local server using domain?如何使用域将我的 Android 应用程序连接到本地服务器?
【发布时间】:2016-05-03 09:23:30
【问题描述】:

我有一个可以在健身房本地运行的 android 应用程序。它通过IP连接到本地服务器。问题是,本地服务器从DHCP接入点获取IP,有时IP发生变化,导致App无法连接服务器。

我使用 IIS 作为网络服务器。我该如何解决这个问题?如果我手动设置IP,它不起作用。

【问题讨论】:

  • 您能否将 DHCP 服务器配置为始终为您的服务器提供相同的 IP?
  • ...或者使用静态IP地址...
  • 检查我的答案,它应该可以解决您的问题

标签: android local


【解决方案1】:

这是一个经典的网络发现问题。您可以使用 udp 数据包来识别服务器。

client = android app, server = 你的本地服务器 服务器实现

  1. 在服务器上打开一个侦听 UDP 请求的套接字。 (我选的是8888)

  2. 创建一个处理 UDP 请求和响应的循环

  3. 在循环内部,检查接收到的 UPD 数据包是否有效
  4. 仍在循环内,向接收到的数据包的 IP 和端口发送响应

客户端实现

  1. 在随机端口上打开一个套接字。
  2. 尝试广播到默认广播地址(255.255.255.255)
  3. 遍历计算机的所有网络接口并获取它们的广播地址
  4. 将循环内的 UDP 数据包发送到接口的广播地址
  5. 等待回复
  6. 当我们有回复时,检查包裹是否有效
  7. 有效时,获取包裹的发件人IP地址;这是服务器的 IP 地址
  8. 关闭插座!我们不想在其他人的计算机上留下开放的随机端口

http://michieldemey.be/blog/network-discovery-using-udp-broadcast/

Android - find a server in the network

【讨论】:

    【解决方案2】:

    您可以使用DDNS 使用您选择的 DDNS 服务将创建的域名访问您的服务器,DDNS 系统会自动将其映射到您服务器的 DHCP IP。 通常 DDNS 是免费的一段时间,然后你需要付费,其他 DDNS 服务是永久免费的,但需要你给你的个人服务帐户打个电话,以免被取消。

    使用 DDNS,您只需从现有的 DDNS 服务(http://dyndns.it/http://www.noip.com/free、ecc ecc)中进行选择,然后按照相应网站中的程序进行操作即可。

    一定要知道 DDNS 服务是否能够在正确的端口上监听(如果你不使用 restful 服务,它可能不是 80)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 2021-07-22
      • 2020-12-01
      • 1970-01-01
      相关资源
      最近更新 更多