2

我正在使用我用 C# 编写的基本程序将 gps 坐标从 Windows 手机发送到网络服务器。问题是手机上的数据计划每月只允许 4 MB。我计划每 10 秒更新一次位置。

目前我只是每10秒向服务器上的一个php页面创建一个webrequest,并且坐标在url中传递,php页面将它们保存到数据库中。

这会为每个请求生成大约 1K 的数据,按照这个速度,我将在不到一天的时间内达到我的数据限制。

有没有更有效的方法来做到这一点?

更新:

我需要多解释一下这个的应用。我在一所大学工作,我们的想法是使用班车上的电话每 10 秒将班车的位置发送到服务器。然后有一个网站,学生可以通过他们的电脑或手机访问并查看班车在哪里。

这将使他们能够决定是要等待班车还是开始步行。所以我可能会进行 20 秒更新,但仅此而已。该应用程序不会 24/7 运行,但我正在使用最坏的情况,以防手机没有关闭。

4

5 回答 5

8

仅当用户从先前的值移动了一定距离时才发送更新怎么样?

例如,当手机放在床边时,夜间每 10 秒重复发送相同的坐标是没有意义的。

于 2010-05-07T15:29:19.633 回答
4

每 10 秒 1 个请求 = 6 个请求/分钟 = 360 个请求/小时 = 8640 个请求/天 = ~260k 个请求/月

4MB/260k ~= 15

所以为了保持在你的限制之下,服务器的平均帖子必须是 15 字节?似乎不可能。

即使您下降到套接字级别(无论如何您可能应该这样做),一个简单的ping发送 84 个字节,所以即使这样也会限制您每分钟一次。

于 2010-05-07T15:25:33.093 回答
2

您可以使用 SMS(文本消息)将坐标从手机发送到服务器。无限发短信通常比数据计划便宜很多。

您还可以将坐标保存在手机上并分批发送(而不是每 10 秒发送一个坐标)。您可以使用两个浮点数或 8 个字节存储 GPS 坐标。每 10 秒一个坐标,每月大约 2MB。如果您使批次足够大,以使通信开销相对于数据大小而言很小,那么您将使其低于 4MB 的限制。

Web 服务使用非常冗长的 SOAP/XML - 将数据作为字节数组发送,然后在服务器上解包单个元素是解决此问题的最佳方法。

于 2010-05-07T15:26:00.237 回答
1

你在哪里,有什么样的数据计划可用?当然,获得一个不那么荒谬的数据计划会比尝试将您的概念融入这样一个微不足道的数据计划更容易吗?在我居住的英国,除了正常的电话合同费用外,500mb - 1gb 的移动数据附加费在每月 5 英镑左右。

于 2010-05-07T15:43:35.033 回答
0

首先:我假设你不会以非常高的速度在 10 秒的时间间隔内跑很远的距离。所以更大的间隔是个好主意。

您可以向客户端添加一些逻辑,以计算到最后一个位置的距离。只有当它超过某个阈值时,您才会发送更新。如果您在同一个位置(例如在家,睡觉,一天几个小时),您可以发送“在这里,位置仍然(几乎)与上一个位置相同” - 整个 X 分钟的数据非常短的消息。虽然 X 是一个递增的值,但取决于上次位置变化的时间。像 5 分钟、15 分钟、30 分钟、1 小时等。这也将节省大量流量,如果位置再次发生变化,您可以立即更新完整的 gps 坐标。

于 2010-05-07T15:31:18.660 回答