Hallo zusammen,
ich habe einen kleinen UDP-Server geschrieben, der eine Datei an seinen Client schicken soll. Der Effizienz halber möchte ich nicht ein byte-Array erstellen, das so groß wie die Datei ist, sondern ich versuche, die Datei in viele kleine Pakete zu unterteilen und diese dann zu verschicken. Auf der Serverseite sieht das dann so aus:
Die Übertragung klappt und es kommen alle Pakete an. Es gibt jedoch ein Problem. Die Dateien sind eigentlich immer korrupt oder stimmen nicht zu 100 % mit der Originaldatei überein. Ich glaube, den Grund zu kennen, doch weiß ich mir gerade nicht zu helfen.
Da die Pakete eine feste Größe von 1024 Byte haben, werden hinten immer ein paar undefinierte Bytes drangehängt. Daher ist die übertragende Datei auch immer leicht größer.
Hat jemand eine Idee, wie ich das verhindern kann?
Danke
ich habe einen kleinen UDP-Server geschrieben, der eine Datei an seinen Client schicken soll. Der Effizienz halber möchte ich nicht ein byte-Array erstellen, das so groß wie die Datei ist, sondern ich versuche, die Datei in viele kleine Pakete zu unterteilen und diese dann zu verschicken. Auf der Serverseite sieht das dann so aus:
Java:
byte[] data = new byte[1024];
in = new BufferedInputStream(new FileInputStream(path));
while (in.read(data) != -1) {
DatagramPacket packet = new DatagramPacket(data, dataLength, address, port);
udpSocket.send(packetToSend);
Die Übertragung klappt und es kommen alle Pakete an. Es gibt jedoch ein Problem. Die Dateien sind eigentlich immer korrupt oder stimmen nicht zu 100 % mit der Originaldatei überein. Ich glaube, den Grund zu kennen, doch weiß ich mir gerade nicht zu helfen.
Da die Pakete eine feste Größe von 1024 Byte haben, werden hinten immer ein paar undefinierte Bytes drangehängt. Daher ist die übertragende Datei auch immer leicht größer.
Hat jemand eine Idee, wie ich das verhindern kann?
Danke
Zuletzt bearbeitet: