昨天在实现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