我应该使用TCP套接字或HTTP post将文件发送到Android应用程序中的服务器

时间:2016-03-23 19:02:08

标签: android http tcp

我有一个处理10秒音频片段的应用程序,并想知道使用自定义TCP套接字将从麦克风录制的处理过的音频片段发送到服务器而不是使用HTTP会更快吗?

2 个答案:

答案 0 :(得分:0)

我认为没有人能够以任何方式衡量差异。

如果您在一个请求中发送文件,http的开销将非常小。通常,http上的开销主要是创建大量的连接,但由于你只会制作一个连接,所以你应该是明确的。

答案 1 :(得分:0)

这在很大程度上取决于您的转移目的。

如果您正在传输,播放和丢弃声音,请使用UDP传输。

如果您将文件作为二进制blob文件发送,则正在使用这两种协议(请记住,HTTP是通过TCP / IP构建的)

如果您通过TCP连接直接发送文件,则开销会略微小于添加的HTTP标头。 (根据我的经验,我建议二进制转移增加30~10%)

编辑:

  

就像你说的那样,在发送之后它会立即被丢弃。虽然没有TCP,但我会保证文件的到达。我需要实施自己的致谢吗?

您不能保证抵达。这基本上是TCP和UDP之间的区别。如果你的目的是"流式的"行为,你可以放弃部分内容,然后UDP很棒,因为第二个"丢失的信息与继续通话无关,在电话中,这类似于通话中的打嗝或尖锐的噪音。

但是,如果要求确保每个位和字节必须到达目的地,则必须使用TCP。

最后,关于HTTP和TCP,TCP将始终是"更小"而不是HTTP,但总的来说它们的大小不会有太大差异。特别是如果您打算执行TCP不直接实现的某些HTTP功能。