Socket发送多张图片只接收到一张的原因

昨天在实现socket发送多张图片时也碰到只接收到一张的情况,于是到网上找了一些资料,没有找到解决办法。也在昨天时,为了解决别的问题,无意中把上述问题也解决了。我在发送过程中是用DataOutputStream的write()方法将图片写入到输出流中,在客户端是通过DataInputStream的read()方法读取。在客户端中使用的是inputStream.read(buffer),buffer为byte数组对象,设长度为size,如果流中还有数据的话,每次读取的长度都为size个byte。在服务端中将图片写入输出流时,用到的是outputStream.write(buffer),buffer为byte数组对象,长度也设为size。看附件图片,在发送的时候,如果一张图片不是size的倍数,则补充到size一样的长度,在写入流中,这样在客户端接收时,只要每次read size个byte到FileOutputStream中就可以。用DataOutputStream来发送会出现只接收到一张的原因是第一张图片写入到流中时接着写第二张图片,如果第一张图片不能刚好是size的倍数,当客户端每次读取size个byte时,在将要读完第一张的那个buffer中,存在部分第二张图片的byte,使得第二张以后的图片都没办法获得完整的byte。所以没办法读取。详细代码请看本人的另一篇博客《Socket实现多张图片的传送》http://jingai-jia.iteye.com/admin/blogs/1202140

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值