Tach Leute,
ich hab ein Programm geschrieben, um Dateien vom Sender zum Receiver zu übertragen.
Schön und gut, funktioniert auch akzeptabel.
Allerdings haben die Dateien nicht mehr ihre Originalgröße sonder ein vielfaches
des Buffers (4096).
Wenn der letzte Block übertragen wird, wird der Rest des Buffers noch gefüllt.
Im Hexeditor sieht man am Ende der Dateien eine ganze reihe Nuller.
Server/Sender:
Client/Receiver:
Die Buffergröße auf "1" zu senken kann nicht die Lösung sein, oder?
Wie kann ich im Code einbauen, das die ganzen leeren Bytes am Ende
weggeschnitten werden?
Legt der Fehler eher auf der Serverseite oder beim Client?
Wäre super wenn ihr mir helfen könnt!
gruss
CyD
ich hab ein Programm geschrieben, um Dateien vom Sender zum Receiver zu übertragen.
Schön und gut, funktioniert auch akzeptabel.
Allerdings haben die Dateien nicht mehr ihre Originalgröße sonder ein vielfaches
des Buffers (4096).
Wenn der letzte Block übertragen wird, wird der Rest des Buffers noch gefüllt.
Im Hexeditor sieht man am Ende der Dateien eine ganze reihe Nuller.
Server/Sender:
Code:
try {
this.server = new ServerSocket(12345);
this.client = this.server.accept();
BufferedOutputStream outputStream = new BufferedOutputStream(this.client.getOutputStream());
InputStream in = new FileInputStream(this.file);
byte[] buf = new byte[4096];
int len;
while ((len = in.read(buf)) > 0) {
this.outputStream.write(buf);
}
in.close();
outputStream.close();
this.server.close();
} catch (Exception e) {
e.printStackTrace();
}
Client/Receiver:
Code:
try {
this.socket = new Socket("localhost",12345);
BufferedInputStream inputStream = new BufferedInputStream(this.socket.getInputStream(),4096);
BufferedOutputStream outputStream = new BufferedOutputStream(this.socket.getOutputStream(),4096);
OutputStream writer = new FileOutputStream(new File("J:\\test\\datei1"));
byte[] buf = new byte[4096];
int len;
while ((len = inputStream.read(buf)) > 0) {
this.writer.write(buf);
}
inputStream.close();
outputStream.close();
writer.close();
this.socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Die Buffergröße auf "1" zu senken kann nicht die Lösung sein, oder?
Wie kann ich im Code einbauen, das die ganzen leeren Bytes am Ende
weggeschnitten werden?
Legt der Fehler eher auf der Serverseite oder beim Client?
Wäre super wenn ihr mir helfen könnt!
gruss
CyD