1

我想通过网络控制机器人,机器人已连接到 Android 设备。操作如下:

  • 使用 JavaScript 和 HTML 编写的 Web 应用程序在台式计算机上运行,​​该计算机从用户那里获取键盘输入并将其发送到连接到机器人的 android 设备。

  • android设备接收命令,然后将它们发送到用于控制机器人的Arduino板。

但是我应该如何将数据传送到没有静态 IP 地址的 Android 设备?

我有两种方法来解决这个问题:

  1. JavaScript 应用程序将键盘输入发送到运行 PHP 和 MySQL 的 Web 服务器,然后 php 应用程序将数据存储在 MySQL 数据库中。一个应用程序在连接到该 Web 服务器的 Android 上运行,并从 MySQL 数据库中提取数据。

  2. JavaScript 将数据发送到 Web 服务器。连接到 Web 服务器的 android 应用程序直接接收数据,因此 Web 服务器仅用作中继。

第一种方法很容易做到,但速度很慢,所以我的问题是......

如何实现第二种方法以及我应该使用哪些网络技术来实现它?以及如何使网络服务器作为两端之间的中继?

PS:我打算使用 000webhost.com 作为网络服务器。所以我不会使用自己的服务器

4

1 回答 1

1

您可以让您的 Android 应用程序轮询网络服务器以获取未完成的命令。这在数据使用方面有点低效,但如果您使用的是无限的 3G 计划/wi-fi,您可以忍受它。这将非常容易实施。

或者,在您的服务器上设置 TCP 服务器,并让您的 Android 应用程序打开与服务器的套接字连接。这样,您的 Web 应用程序可以将命令发送到服务器,服务器将立即将它们流式传输到 Android 设备。实施起来会稍微困难一些,但如果做得好,会更有效和更健壮。

PS - 大多数共享服务器不允许您在主机上打开 TCP 服务器,因此您可能被迫使用第一个选项。

PPS - 我不知道 Google Cloud Messaging。对于您想要实现的目标来说,这似乎是一个很好的解决方案。你应该看看它。

于 2012-10-10T16:22:45.697 回答