ecco a te
questo è il metodo per la ricezione

codice:
private boolean prendiFile(String received,ObjectInputStream ois) throws IOException, ClassNotFoundException
	{
		boolean so = false;
		File outFile = null;
		System.out.println("Ricezione file in corso..");
		
 		 outFile = new File(DIR + "/" + file1.getName());
		
		if (ready == true){
System.out.println("File di destinazione: " +outFile+"\n");
 		 System.out.println(" --ricezione file ");
 	      System.out.println(" --dimensione file " + FILEDIM);
 	 
     
 	     int current=0;
 	      // scrivo uno stram per il salvataggio del nuovo file
 	      FileOutputStream fos = new FileOutputStream(DIR +"/" +file1.getName());
 	     
 	    BufferedOutputStream bos = new BufferedOutputStream(fos);
        InputStream is = s.getInputStream();
 	      byte[] buf = new byte[FILEDIM];
 	     
 	     int i = 0;
 	     
 	      // riga per riga leggo il file originale per 
 	      // scriverlo nello stram del file destinazione
 	     
 	     is.skip(1);       //  ignorate.. 
 	    i= is.read(buf,0,buf.length);
 	    current = i;
 	     while(i>0){
 	    	

 	 
 	     i= is.read(buf,current,(buf.length-current));
 	     
           System.out.println("byte letti = " +i+"\n");
           current +=i;
 	     }
 	    System.out.println("TOTALE = " +current+"\n");
 	    bos.write(buf, 0 , current);
	     bos.flush();
           
 	     
 	      System.out.println(" --ricezione completata\n --salvataggio");
 	    
 	     bos.close();
    	fos.close();
    	   
    	outFile = null;
    	file1 = null;
    	file = null;

    	    // svuotare gli strem -->
    	    
    	 
    	    
    	    // <--
 	     so = true;
		}
		
 	  
 	      return so;
	}
e questo è quello di invio

codice:
  
			    String file = null;
				file = str.substring(str.indexOf("?")+1, str.length());
				File file0 = new File(file);
				if (file0.exists()==true){
			oos.writeObject("XDCCGETFILE#GET#"+file0.length());
			oos.flush();
		
	      byte [] filearray = new byte[(int)(file0.length())];
	
            oos.reset();
           
          
            FileInputStream fis = new FileInputStream(file0);
            BufferedInputStream bis = new BufferedInputStream(fis);
            bis.read(filearray,0,filearray.length);
           
            System.out.println("Sending...");

             // invio il file
            oos.write(filearray, 0, filearray.length);
            //.. <_
		      oos.flush();
		      System.out.println("Inviato!!");
		      }
Ti ho dato solo questi due metodi perchè non ho dubbi sul fatto che il problema è qui..
ovviamente entrambi i metodi si trovano sia sul client che sul server..