使用Android的HTTP或Socket

时间:2014-06-18 11:55:18

标签: android sockets http urlconnection socketchannel

我必须经常每100毫秒从Android手机向服务器发送数据。(电池不是问题)。我正在与自己讨论是否可以使用标准Java URL连接来实现此目的,或者使用SocketChannel创建自己的自定义套接字实现。我可以完全控制两个端点,并可以自由选择我想要的任何东西。这些方法的优点和缺点是什么?还有其他方法吗?请注意,我已经尝试过Google XMPP。但发现许多数据点都在下降。没有得到Google的回复。

请注意,可靠性是首要考虑因素。我必须实时获取每个样本,除非无线电链路本身存在一些问题。请提供一些指示。

4 个答案:

答案 0 :(得分:0)

套接字TCP连接:

  • (+)由于TCP数据包重传而可靠传送。
  • ( - )非标准端口/协议被许多移动互联网提供商阻止
  • ( - )数据包重传可能会导致延迟,因此不是实时的。

套接字UDP连接

  • (+)如果收到数据包,则会收到这些方法的最低延迟。
  • ( - )非标准端口/协议被许多移动互联网提供商阻止
  • ( - )不可靠的传送,数据包可能被复制,截断或丢弃。

HttpURLConnection类:

  • (+)许多用户可以使用您的应用程序(许多移动互联网提供商阻止HTTP(80)和HTTPS(443)旁边的端口,并使用深度数据包检查(用于HTTP)以确保遵守协议)。< / LI>
  • 由于TCP重传和代理而最可靠。
  • ( - )TCP数据包重传可能会导致延迟,因此不是实时的。
  • ( - )代理可能会增加进一步的延迟,导致它更不实时。

答案 1 :(得分:0)

如果您必须经常传输数据,那么使用套接字是有意义的。您可以长时间保持连接打开,在同一频道内发送数据包,并且在每次传输时不要浪费资源重新打开它。

答案 2 :(得分:0)

我考虑了各种选项:http,xmpp,自定义套接字实现..最后我偶然发现了 https://github.com/Gottox/socket.io-java-client。无痛地工作。我立刻就跑起来了!当然,在早期项目中使用socket.io有所帮助。我从没想过会有socket.io的java客户端!猜猜我没有问正确的问题。到目前为止,这个解决方案运作良好。如果有的话,我会测试并发布更新。如果您需要实现持久的实时通信,请考虑此选项。

答案 3 :(得分:0)

如果您要为出租车应用或大型实时数据传输应用实现 socket.io ,请不要使用socket.io 。只需使用 firebase 或首选的 http 连接。