Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-over3G应该使用哪些端口?TCP是最好的连接方式吗?_Java_Android_Sockets_Grid_3g - Fatal编程技术网

Java Android-over3G应该使用哪些端口?TCP是最好的连接方式吗?

Java Android-over3G应该使用哪些端口?TCP是最好的连接方式吗?,java,android,sockets,grid,3g,Java,Android,Sockets,Grid,3g,作为一种通信方式,TCP是通过3g从另一个android设备向多个android设备传输大量数据的最佳方式吗?还有推荐的3g数据传输端口吗 我想排除使用web服务中介的可能性,因为我希望这个应用程序尽可能分散 干杯, James如果您的数据不能遗漏部分,则必须使用TCP。如果您的数据可能丢失某些部分,如视频/语音聊天,则可以使用UDP 3G使用与任何其他网络类型相同的网络层,因此您可以自由使用任何您喜欢的端口 作为一种通信方式,TCP是最好的 获取大量数据的方法 多个android设备来自另一个

作为一种通信方式,TCP是通过3g从另一个android设备向多个android设备传输大量数据的最佳方式吗?还有推荐的3g数据传输端口吗

我想排除使用web服务中介的可能性,因为我希望这个应用程序尽可能分散

干杯,
James

如果您的数据不能遗漏部分,则必须使用TCP。如果您的数据可能丢失某些部分,如视频/语音聊天,则可以使用UDP

3G使用与任何其他网络类型相同的网络层,因此您可以自由使用任何您喜欢的端口

作为一种通信方式,TCP是最好的 获取大量数据的方法 多个android设备来自另一个 3g上的android设备


考虑到您的“无网络服务”限制,3G可能对您毫无用处。许多移动运营商使用NAT和相关技术,因此无法保证两台设备之间的直接套接字连接。WiFi也是如此——许多WiFi路由器使用NAT,提供私有IP地址,在不修改其中一个路由器的情况下排除直接的套接字连接。

一些3G网络可能会提供多播,这对于任何服务器来说都是最省力的,因为它只发送一次消息,而不考虑用户数量。否则,每个侦听设备都必须向服务器打开一个唯一的套接字,服务器必须依次向每个设备发送消息。根据消息的性质,可以使用UDP或TCP。这一切都取决于消息是否需要确认,是否易变,是否有许多消息或只有少数消息等


JMS或消息总线之类的东西通常会为您处理所有这些。我不知道android是否有JMS端口(例如OpenJMS),但值得研究。

hmmm,如果web服务是唯一的选择,那么我能做的最低限度是什么?使用UDP的简单存储系统?错误检查可以由应用程序完成并签名。另外,在第2层OSI上是否可以向端口广播,或者原始套接字是否也可以得到相同的处理?@James Birchall:“好吧,如果web服务是唯一的选择,那么我能做的最低选择是什么?”这完全取决于您希望使用的协议,并且在很大程度上独立于Android。关于P2P系统的NAT穿越,有大量的文章。然而,我不是这方面的专家。例如,您可能想看看JXTA:或者您可以使用UDP实现自己的流控制和数据包重传。在某些情况下,这可以很好地工作,例如3G网络,其延迟可能非常高。虽然网络运营商的设备能够进行多播,但大多数(我与之交谈过)没有启用多播,也没有打算启用多播。如果你有足够的影响力,你可能会得到一个私人APN,他们可能会在该APN上启用它,但这是一个长期的机会。