1

有人可以向我解释几个非常简单的概念吗?我对运行 android 的移动设备以及如何通过网络识别它们感兴趣。一些场景:

  • 设备通过 WiFi 连接- 大概该设备具有与任何主机一样的标准 IP 地址,并且可以通过 TCP/IP 与任何其他 android 主机通信(假设它知道参与设备的 IP?
  • 设备通过蓝牙连接- 在这种情况下如何识别设备?
  • 设备通过移动运营商的网络连接- 这是我感兴趣和困惑的一个 - 是否有两个或更多设备可以相互发现并通过移动运营商的网络进行通信?在这种情况下,设备如何与后端服务器通信?换句话说,应用程序和设备在连接到 WiFi 网络时如何通信?

谢谢你的建议。。

4

2 回答 2

1

我只确定蓝牙的事情,所以我只回答这部分:

您设备上的蓝牙接口有一个 MAC 地址。因此,通过蓝牙进行通信时,您可以假设此 MAC 地址是特定设备的唯一标识符。您还可以通过此 MAC 地址建立连接来访问其他设备 - 但是,首先要获取此 MAC 地址,您必须从某个地方知道它,或者您必须先在reachabla 区域搜索其他蓝牙设备。

于 2010-05-28T13:12:51.290 回答
1

WiFi 和 3g 都将 [移动] 设备连接到互联网,因此它可以建立互联网连接。3G 为设备分配了一个可公开寻址的 IP,因此可以打开一个服务器套接字并监听连接。客户端必须知道移动 IP,这可能会非常频繁地更改。

蓝牙更适合近距离接触。与附近的设备配对后,可以连接到它们,这需要两个要通信的设备的配合。

如果目标是生成一个连接到附近设备的应用程序,我可以想到以下想法:

  • 3g:运行客户端的所有设备都向中央数据库服务器注册其位置。如果服务器检测到两个客户端非常接近,让他们知道,以便他们可以通过互联网或服务器连接
  • WiFi:您可以使用与 3g 相同的想法,或者使用广播/多播数据包来广播您的存在。其他应用程序可以监听这些广播并发现附近有哪些其他设备。
  • 蓝牙:有点棘手,因为必须将设备置于可发现模式才能让其他人“看到它”。可发现模式是一种临时状态,仅持续约 30 秒(一次)。
于 2010-05-28T16:38:15.223 回答