Senden und Empfangen von Dateien am Socket

Ich sende Dateien vom Java-Server zum Remote-Android-Client. Ich schreibe die Bytes mit Outputstream. Beim Lesen dieser Bytes versucht die Methode read () weiterhin, die Bytes zu lesen, nachdem der Stream beendet wurde. Wenn ich den Ausgabestream auf der Serverseite schließe, werden Bußgelder für Leseoperationen berechnet. Aber ich muss die Datei erneut auf den gleichen Socket schreiben, damit der Ausgabestream nicht geschlossen werden kann.

HINWEIS: MEIN CODE FUNKTIONIERT GUT, UM EINE DATEI ZU TEILEN

CODE FÜR DAS SCHREIBEN VON DATEIEN

   public static void writefile(String IP, String filepath, int port, OutputStream out ) throws IOException {

        ByteFileConversion bfc = new ByteFileConversion();
        byte[] file = bfc.FileToByteConversion(filepath);

        out.write(file, 0, file.length);
        out.close(); // i donot want to close this and how can I tell reading side that stream is ended.


        System.out.println("WRITTEN");

    }

Hier lese ich Datei auf Android:

     public Bitmap fileReceived(InputStream is)
 { 

Bitmap bitmap = null;  
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "a.png";
String imageInSD = baseDir + File.separator + fileName; 
//  System.out.println(imageInSD);
if (is!= null) {
    FileOutputStream fos = null;
    OutputStream bos = null;
    try {

        bos = new FileOutputStream(imageInSD);

        byte[] aByte = new byte[1024]; 
        int bytesRead;  
         int index = 0;
         DataInputStream dis = new DataInputStream(is);



        while ( (bytesRead = is.read(aByte)) >0   ) {
             index =  bytesRead +index;
            bos.write(aByte, 0, bytesRead); 

          //  index = index+ bytesRead;

       System.out.println("Loop"+aByte+ "    byte read are "+bytesRead+ "whree  index ="+ index); 

        }  
        bos.flush();
       bos.close();

    Log.i("IMSERVICE", "out of loop");     
        java.io.FileInputStream in = new FileInputStream(imageInSD);
   bitmap = BitmapFactory.decodeStream(in);
      bitmap = BitmapFactory.decodeFile(imageInSD);

Log.i("IMSERVICE", "saved");
   //   if (bitmap != null) 
 //       System.out.println("bitmap is    "+ bitmap.toString());

    } catch (IOException ex) {    
        // Do exception handling      
 //     Log.i("IMSERVICE", "exception ");
        System.out.println("ex");
    }
}

return bitmap;
}

Eigentlich möchte ich die Socket-Verbindung zurücksetzen

Danke im Voraus

Antworten auf die Frage(2)

Ihre Antwort auf die Frage