如果在socket中有下面这种情况发生,就不能使用,一般的方法读取socket中的字节 Socket socket=new Socket(ip,port);   socket.setSendBufferSize(1);
    socket.getOutputStream().write("nihaoddddddddddddddd".getBytes());   socket.getOutputStream().flush();      socket.getOutputStream().write("dajiahao".getBytes());   socket.getOutputStream().flush();   socket.getOutputStream().write("222".getBytes());   socket.getOutputStream().flush();  socket.getOutputStream().close(); 可以使用下面的方法读取 public static byte[] readSocket(Socket socket) throws Exception{   ArrayList l=new ArrayList();      InputStream  out=socket.getInputStream();   int totallen=0;   int count;   /**    * 如果socket对方已经将socket关闭,再次读socket里面的内容放回count为负数;   *  读socket超时,反回已经读的字节    */   for(;;){    byte[] tmp=new byte[3000];    try{     //System.err.println(out.available());          count=out.read(tmp);     System.err.println("count"+count);    }catch(Throwable e){     e.printStackTrace();     System.err.println("ddddddddddddd");     break;    }     System.err.println("count"+count);     if(count<=0){      break;     }     totallen+=count;     byte[] tmp2=new byte[count] ;          System.arraycopy(tmp,0,tmp2,0,count);     l.add(tmp2);   }   byte[] bs=new byte[totallen];   int pos=0;   for(int i=0;i<l.size();i++){    byte[] tmp=(byte[])l.get(i);        System.arraycopy(tmp,0,bs,pos,tmp.length);    pos+=tmp.length;   }   return bs;  }  
 
  |