我正在使用我在C#中编写的基本程序从Windows手机向网络服务器发送gps坐标。问题是手机上的数据计划每月只允许4 MB。我计划每10秒更新一次这个位置。
目前我只是每隔10秒创建一个webrequest到服务器上的php页面,坐标在url中传递,php页面将它们保存到数据库中。
这会为每个请求生成大约1K的数据,按此速率,我将在不到一天的时间内达到我的数据限制。
有更有效的方法吗?
更新:
我需要解释一下这个的应用。我在一所大学工作,我们想在我们的班车上使用电话,每隔10秒就将班车的位置发送到服务器。然后有一个学生可以通过他们的电脑或电话访问的网站,看看航天飞机在哪里。
这将允许他们决定是否要等待班车或开始行走。所以我可能会进行20秒的更新,但那将是关于它的。该应用程序不会全天候运行,但我使用最坏的情况,以防手机没有关闭。
答案 0 :(得分:8)
当用户距离之前的值一定距离时,仅发送更新怎么样?
例如,当电话坐在床边时,没有必要每晚10次重复发送相同的坐标。
答案 1 :(得分:4)
每10秒1 req = 6 req / min = 360 req / hr = 8640 req / day = ~260k req / month
4MB / 260k~ = 15
所以为了保持在你的极限之下,服务器的平均邮件必须是15个字节?似乎不可能。
即使你去了套接字级别(你可能应该这样做),一个简单的ping
发送84个字节,所以即使这样也会限制你每分钟一次。
答案 2 :(得分:2)
您可以使用短信(短信)从手机向服务器发送坐标。无限制的短信通常比数据计划便宜很多。
您还可以保存手机上的坐标并分批发送(而不是每10秒发送一个坐标)。您可以存储具有两个浮点数或8个字节的GPS坐标。每10秒一个坐标,每月大约2MB。如果您使批次足够大以使通信开销相对于数据大小较小,那么您将使其低于4MB的限制。
Web服务使用非常冗长的SOAP / XML - 将数据作为字节数组发送,然后解压缩服务器上的各个元素是解决此问题的最佳方法。
答案 3 :(得分:1)
世界上哪些人,您有哪些数据计划?当然,获得一个不那么荒谬的数据计划比尝试将您的概念融入这样一个可怜的数据计划更容易?在我居住500英镑的英国 - 1GB的移动数据附加费在您的正常电话合同成本的基础上每月5英镑。
答案 4 :(得分:0)
首先:我假设你不会以非常高的速度旅行以在10秒的时间间隔内建立一个非常大的距离。因此,更大的间隔是个好主意。
您可以向客户端添加一些逻辑,以计算到最后位置的距离。只有当它超过某个阈值时才会发送更新。如果你在同一个地方(比如在家,睡觉,一天几个小时),你可以发送'在这里,位置仍然(几乎)与最后一个相同' - 所有X分钟的数据非常短的消息。而X是一个增加值,取决于最后一次位置变化的时间长短。比如5分钟,15分钟,30分钟,1小时等。这样可以节省大量的流量,如果位置再次变化,您可以立即更新完整的GPS坐标。