java socket 服务端接收客户端数据无法停止

客户端以byte流的形式发送一张图片给服务端,客户端传送完毕,并且在控制台输出"发送完毕"四个字出现乱码情况,服务端已经接收完数据却还在每隔大概1秒接收10byte的数据,不会停下来
服务端代码:
private RequestController(Connection con,Vector sockets,String Usr_Nub,String sUsr_Nub,String Message,String str_numOfpic) //#5
{
if (Online_Handle_sql.IfOnline(con,sUsr_Nub))
{
Socket sSocket=this.findSocket(con,sockets,sUsr_Nub);
try
{
DataOutputStream sout=new DataOutputStream(sSocket.getOutputStream());
synchronized (sout)
{
sout.writeUTF("#8 "+Usr_Nub+" "+Message+" "+str_numOfpic);
DataInputStream in=new DataInputStream(this.findSocket(con,sockets,Usr_Nub).getInputStream());
byte[] buffer=new byte[15000];
for (int i=0;i<Integer.parseInt(str_numOfpic);i++)
{
System.out.println("[");
int readlen=0;
while ((readlen=in.read(buffer))!=-1)
{
sout.write(buffer,0,readlen);
System.out.println(readlen);
}

System.out.println("|");
sout.writeInt(in.readInt());
System.out.println("]");
}
}
}
catch (IOException e)
{

        }
    }
    else
    {
        Online_Handle_sql.addRequestUpdate(con,sUsr_Nub,"#8 "+Usr_Nub+" "+Message);
    }
}

客户端:
for (Entry<String,Integer> entry : pic_path_pos.entrySet())
                {
                    UsrChatFrame.this.appendPic(entry.getKey(),UsrChatFrame.this.MessagePanedoc.getLength()-sendMsgPaneLen+entry.getValue()-numOfpic-1); //本地显示发送的图片

                    FileInputStream fin=new FileInputStream(entry.getKey());
                    byte[] buffer=new byte[15000];
                    int readlen=0;
                **  while ((readlen=fin.read(buffer))!=-1)
                    {
                        out.write(buffer,0,readlen);
                        System.out.println(readlen);
                    }**
                    out.flush();
                    out.writeInt(entry.getValue());
                    System.out.println(entry.getValue());
                    fin.close();
                }

没有想明白是什么原因

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^