Senden und Empfangen von Binärdateien über Java-Sockets
In dieser Diskussion befassen wir uns mit den Feinheiten des Sendens und Empfangens von Dateien im Binärformat ( Byte-Arrays) über Java-Sockets.
Lassen Sie uns zunächst die Serverimplementierung analysieren. Der Server lauscht auf Port 4444 und liest mithilfe der Methode read() Daten vom Client. Diese Methode erfordert eine vordefinierte Puffergröße, die in diesem Fall auf 1024 Bytes festgelegt ist. Allerdings weist dieser Ansatz eine Einschränkung auf. Wenn die übertragene Datei größer als die Puffergröße ist, wird nur ein Teil der Datei empfangen, was zu Datenbeschädigung führt.
Der Client-Code hingegen versucht, den Inhalt der Datei zu schreiben. test.xml“ mithilfe der Methode write() in den Ausgabestream ein. Vor dem Senden der Daten ist es jedoch wichtig, die Größe der Datei zu bestimmen. Wenn die Dateigröße den maximalen Ganzzahlwert (Integer.MAX_VALUE) überschreitet, tritt ein Fehler auf.
Um diese Probleme zu beheben und eine zuverlässige Dateiübertragung sicherzustellen, wird ein robusterer Ansatz empfohlen. Der folgende Code zeigt die korrekte Methode zum Kopieren eines Byte-Streams mithilfe eines Puffers:
<code class="java">int count; byte[] buffer = new byte[8192]; // The buffer size can be adjusted as needed while ((count = in.read(buffer)) > 0) { out.write(buffer, 0, count); }</code>
Durch die Verwendung eines Puffers und das Durchlaufen der Daten, bis das Ende des Streams erreicht ist, können wir Dateien jeglicher Art effizient verarbeiten Größe.
Das obige ist der detaillierte Inhalt vonWie kann ich Binärdateien zuverlässig über Java-Sockets senden und empfangen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!