tcp客户端传给服务器一张图片

问题遇到的现象和发生背景

请教,关于tcp客户端传给服务器一张图片,服务器再取读出来现在再窗口上,遇到的问题是,有时候图片只接收一部分,有时候还是空的图片。
像见鬼一样。不知道错在哪里了。

问题相关代码,请勿粘贴截图
                    InputStream is = socket.getInputStream();
                    int len =0;
                    byte[] bytes = new byte[8192];
                    ByteArrayInputStream in = new ByteArrayInputStream(bytes);
                    while ((len = is.read(bytes))!=-1){
                        //image = ImageIO.read(in);
                        drawArea.repaint();
                        jf.repaint();
                    }
运行结果及报错内容

不能正常接收文件

我的解答思路和尝试过的方法

找不到办法

我想要达到的结果

客户端传给服务器一张图片,然后服务器显示在窗口组件里

图片有什么格式