客户端以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();
}
没有想明白是什么原因