Heim  >  Artikel  >  Java  >  Wie kann ich Binärdateien zuverlässig über Java-Sockets senden und empfangen?

Wie kann ich Binärdateien zuverlässig über Java-Sockets senden und empfangen?

DDD
DDDOriginal
2024-11-05 08:33:02511Durchsuche

How to Reliably Send and Receive Binary Files Over Java Sockets?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn