Android 安卓3g广播

Android 安卓3g广播,android,tcp,udp,broadcast,3g,Android,Tcp,Udp,Broadcast,3g,我正在编写一个应用程序的早期阶段,该应用程序需要将数据广播到其他几个设备 我的第一个想法是使用UDP广播,然而,根据这两种说法 和 在移动网络上,UDP将无法通过NAT (这对我的应用程序至关重要) 我知道我可以使用服务器进行广播,但是我宁愿避免在我的家庭服务器上产生太多的流量 我能想到的最后一种选择是拥有几个tcp/ip连接,并通过所有连接的客户端循环发送广播。但由于我指望至少有30名听众,我相信这将是非常昂贵的 我还没有任何与广播相关的代码,这就是为什么我没有发布任何;) 有办法突破NAT吗

我正在编写一个应用程序的早期阶段,该应用程序需要将数据广播到其他几个设备

我的第一个想法是使用UDP广播,然而,根据这两种说法 和 在移动网络上,UDP将无法通过NAT (这对我的应用程序至关重要)

我知道我可以使用服务器进行广播,但是我宁愿避免在我的家庭服务器上产生太多的流量

我能想到的最后一种选择是拥有几个tcp/ip连接,并通过所有连接的客户端循环发送广播。但由于我指望至少有30名听众,我相信这将是非常昂贵的

我还没有任何与广播相关的代码,这就是为什么我没有发布任何;)

有办法突破NAT吗?手机能否同时处理30个tcp/ip连接?或者我应该研究其他的广播方式吗

任何提示都将不胜感激

问候 约翰·里奇

:增加:增加:增加:增加:增加:增加:增加:增加:增加: 我将每30-360秒发送一次长度为10-20个字符的字符串 (将由用户控制)包含字符串格式的地理点。数据的发送顺序并不重要,这就是我首先想到udp的原因

我已经设置了我的服务器,这样当用户登录时,他/她会用他/她的当前ip更新我的数据库

我希望它能在全球范围内运行,但前提是它能在同一个国家的移动网络中运行

这就是我能想到的所有相关信息,希望这能澄清一些事情!
注意:NAT不通过UDP,因为UDP没有目的地址,所以从技术上讲,UDP必须发送到网络的所有子网。当网络是您的家庭局域网时,这没什么大不了的,但是当网络是您的ISP或大学主干网或蜂窝网络提供商时,UDP可以复制到数十万个子网。这是一场数据包风暴,它会降低每个人的网络性能,而且对于你的特定应用程序来说,这是一场巨大的杀伤力,因为你真的只想与少数客户交谈

这个问题已经解决了很多次了。即时消息客户端的情况与您的类似:希望在可能的情况下通过防火墙进行直接P2P消息传递。他们是怎么做到的?最初的NAT穿越/防火墙穿越解决方案是设置消息中继服务器。所有客户端都与服务器通信,服务器根据需要将消息从一个客户端回显到其他客户端。它与NAT和防火墙一起工作,因为客户端启动到服务器的传出连接

如果客户端能够建立点对点连接,那么中继服务器只需为客户端提供彼此的IP地址并停止中继消息

UPNP是一种协议,允许客户端请求防火墙为传入流量打开端口。BitTorrent客户端使用UPNP使客户端能够连接P2P进行文件共享。客户端通过torrent服务器找到彼此。现在大多数家庭局域网防火墙路由器都支持UPNP,但我怀疑蜂窝网络提供商是否会为空中连接提供UPNP支持

另一种(远程)可能性是多播TCP/IP,但正如我所记得的,这是真正优化的“推送”内容从服务器流向客户端,而不是源于客户端的点对点


你最好的选择是看看那些开源IM客户端,尤其是那些采用Android实现的客户端,看看它们是如何实现IM的。我肯定还有其他人。您甚至可以使用IM系统的消息传递API作为数据传输层,或多或少地完全不涉及有线级别的详细信息。

NAT不通过UDP,因为UDP没有目标地址,所以从技术上讲,UDP必须发送到网络的所有子网。当网络是您的家庭局域网时,这没什么大不了的,但是当网络是您的ISP或大学主干网或蜂窝网络提供商时,UDP可以复制到数十万个子网。这是一场数据包风暴,它会降低每个人的网络性能,而且对于你的特定应用程序来说,这是一场巨大的杀伤力,因为你真的只想与少数客户交谈

这个问题已经解决了很多次了。即时消息客户端的情况与您的类似:希望在可能的情况下通过防火墙进行直接P2P消息传递。他们是怎么做到的?最初的NAT穿越/防火墙穿越解决方案是设置消息中继服务器。所有客户端都与服务器通信,服务器根据需要将消息从一个客户端回显到其他客户端。它与NAT和防火墙一起工作,因为客户端启动到服务器的传出连接

如果客户端能够建立点对点连接,那么中继服务器只需为客户端提供彼此的IP地址并停止中继消息

UPNP是一种协议,允许客户端请求防火墙为传入流量打开端口。BitTorrent客户端使用UPNP使客户端能够连接P2P进行文件共享。客户端通过torrent服务器找到彼此。现在大多数家庭局域网防火墙路由器都支持UPNP,但我怀疑蜂窝网络提供商是否会为空中连接提供UPNP支持

另一种(远程)可能性是多播TCP/IP,但正如我所记得的,这是真正优化的“推送”内容从服务器流向客户端,而不是源于客户端的点对点

你最好的选择是看看那些开源IM客户端,尤其是那些采用Android实现的客户端,看看它们是如何实现IM的。我肯定还有其他人。您甚至可以使用IM系统的消息传递API