作为一种通信方法,TCP 是通过 3g 从另一个 android 设备获取大量数据到多个 android 设备的最佳方式吗?还有推荐的端口用于 3g 数据传输吗?
我想排除使用网络服务中介的可能性,因为我希望这个应用程序尽可能去中心化。
干杯,詹姆斯
作为一种通信方法,TCP 是通过 3g 从另一个 android 设备获取大量数据到多个 android 设备的最佳方式吗?
鉴于您的“无 Web 服务”限制,3G 可能对您毫无用处。许多移动运营商使用 NAT 和相关技术,因此无法保证在两个设备之间建立直接套接字连接。WiFi 也是如此——许多 WiFi 路由器使用 NAT,分发私有 IP 地址,在不修改其中一个路由器的情况下排除直接套接字连接。
如果您有不能遗漏部分的数据,则必须使用 TCP。如果您的数据可能会丢失某些部分,例如视频/语音聊天,则可以使用 UDP。
3G 使用与任何其他网络类型相同的网络层,因此您可以自由使用任何您喜欢的端口。
一些 3G 网络可能会提供多播,这对于任何服务器来说都是最省力的,因为无论订阅者的数量如何,它都会发送一次消息。否则,每个侦听设备都将不得不向服务器打开一个唯一的套接字,并且服务器将不得不依次发送每个消息。根据消息的性质,可能使用 UDP 或 TCP。这一切都取决于消息是否需要确认,是否易变,是否有很多消息或只有几个等。
JMS 或消息总线之类的东西通常会为您处理所有这些。我不知道是否有 JMS 到 android 的端口(例如 OpenJMS),但它值得研究。