Java 通过datainputStream以字节[]数组的形式接收多个图像

Java 通过datainputStream以字节[]数组的形式接收多个图像,java,arrays,image,byte,datainputstream,Java,Arrays,Image,Byte,Datainputstream,好的,那么对于我的服务器程序,我正在尝试发送15个图像,代码: try{ //t1.start(); for(int i =1; i<16; i++){ baos = new ByteArrayOutputStream(); BufferedImage img = ImageIO.read(new File("myimage"+i+".jpg")

好的,那么对于我的服务器程序,我正在尝试发送15个图像,代码:

try{
                //t1.start();
                for(int i =1; i<16; i++){
                    baos  = new ByteArrayOutputStream();
                    BufferedImage img = ImageIO.read(new File("myimage"+i+".jpg"));
                    ImageIO.write(img, "jpg", baos);
                    baos.flush();
                    imageInByte=baos.toByteArray();
                    outToClient.write(imageInByte,0,imageInByte.length);
                    outToClient.flush(); 

                    //System.out.println(Arrays.toString(imageInByte));             
                    //ImageIO.write(img, "jpg", outToClient);
                }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

好的,所以我知道while(true)循环不起作用,我尝试了很多替代方法,比如if语句来检查datainputstream的字节数等,但是我没有乐趣。有人知道如何从服务器连续接收字节[]数组吗?任何帮助都将不胜感激。

您正在使用Java吗?哦,是的,很抱歉没有说明。是的,我正在使用java。在客户端代码中,您也可以看到“File outputfile=new File(“saved1.jpg”);”,如果我想让它正常工作,我希望每个新图像都保存到下一个数字,即saved2.jpg,saved3.jpg等您不需要在图像之间使用某种类型的清除器序列,以便客户端知道一个图像何时结束,另一个图像何时开始吗?如果您正在制定自己的协议,则应为每个映像创建一个标头,标头至少指示以下映像的大小(以字节为单位),以便您知道何时到达映像的末尾并可以启动下一个映像。通过使用ObjectOutputStream而不是dataoutputstream解决了此问题。
try
            {   

                Socket sock = new Socket("127.0.0.1", 8001);
                DataInputStream inFromServer = new DataInputStream(sock.getInputStream());
                System.out.println("networking established");
                byte[] message = new byte[120947];

                while(true){

                inFromServer.read(message);
                BufferedImage image = ImageIO.read(new ByteArrayInputStream(message));
                File outputfile = new File("saved1.jpg");
                ImageIO.write(image, "jpg", outputfile);


                }

            }catch(IOException ex){
                ex.printStackTrace();
            }