我正在研究一个项目,其中“我必须从”服务器“获得4096字节的数据到服务器”每“1毫秒到10毫秒之间”。但它“花费太多时间”即“周围” 300毫秒 - 700毫秒“这导致我的应用程序丢失数据。
我正在使用下面的代码段
HttpClient client = new DefaultHttpClient();
HttpPost request = new HttpPost("http://192.168.1.40/ping");
HttpResponse response = client.execute(request);
HttpResponse只花费太多时间,即大约300ms - 700ms。
如何更快地获得回复?
除此之外,还有什么我可以用来从服务器获得更快的响应呢?
请让我知道任何解决方法或解决方法。
我已经完成了谷歌,经历了DataOutputStream
和ByteOutputStream
之类的其他方式,但没有使用它,它也花费了太多时间HttpResponse
。
帮助将不胜感激。
答案 0 :(得分:4)
在您更快地做出回复之前,您需要调查并了解他们目前为何需要很长时间。粗略地说,它可能是:
执行以下操作:
实现SPDY 可能有帮助,但不太可能将响应时间改为500毫秒到几十毫秒。这个问题似乎比“HTTP老而慢”更为根本。同样的推理也适用于人们提出的所有其他建议。
答案 1 :(得分:1)
这是不可能的。您每次都在重新创建连接。
您需要与服务器保持持久连接。尝试创建持久的http连接。
如果这不起作用,您可以尝试发送原始udp数据包(或其他任何内容)。它会更难,但需要更少的时间。
答案 2 :(得分:0)
使用SPDY协议。这样可以缩短您的响应时间。
我认为在您的情况下,您可以使用websockets,这样您就不必每次都创建连接,并且每次都可以使用实时连接。
答案 3 :(得分:0)
如果服务器启用SPDY,则@sheldonCooper应答是正确的。您还可以添加Gzip压缩。它已添加到GingerBread之后的所有请求中,但您可以为以前的SDK版本添加它:http://android-developers.blogspot.fr/2011/09/androids-http-clients.html