客户端通过DataOutputStream发送数据,到服务器端发现前面多了五个字节,何故?欢迎讨论,共同提高
efei 2005-08-24 03:31:54 在客户端通过DataOutputStream写入一段二进制数据,数据长度通过content-length传递给了服务器
但是调试了半天发现在客户端写入的数据前,凭空多了五个字节的数据,导致数据接收不完全
五个字节的数据可能是这样的:
39 61 34 0D 0A
36 38 64 0D 0A
38 61 63 0D 0A
39 61 34 0D 0A
……
大家也注意到每一条的第四、五个字节的数据是一样的
而第一条和第四条的数据又是一样的
那么这五个字节的数据表示什么呢?是从哪来的呢?
同时,也有极小的几率不会有这五个字节
连接方式是直连,没有用172那个代理。
在某一篇文章中,作者写到:
=======================================
调用flush ()方法的意图是发送已经写入的数据到DataOutputStream的服务器的缓冲区中。 在某些电话上,这个操作工作正常,在其他的电话上,它导致HTTP请求的Transfer - Encoding被设置为" chunked ",有一些随机字符被放到请求本身的前面和后面。那又怎样处理这个问题呢?这个方法调用实际上是根本不需要的。在接下来的一行中,服务器连接打开(通过openInputStream ()),将自动输入缓冲区。因此,你最好不要调用缓冲区的flush()方法。这个方法其余的部分保持不变,除了DataOutputStream对象必须在finally{;};语句块中关闭。
============================================
我也尝试不flush,但是依然有这个问题存在