Heim > Java > javaLernprogramm > Wie übertrage ich Dateien effizient über Sockets in Java?

Wie übertrage ich Dateien effizient über Sockets in Java?

Mary-Kate Olsen
Freigeben: 2024-11-04 05:52:29
Original
1101 Leute haben es durchsucht

How to Efficiently Transfer Files over Sockets in Java?

Dateiübertragung über Sockets in Java

Die Dateiübertragung über Sockets erfordert die Umwandlung von Dateien in Byte-Arrays, deren Übertragung und deren Wiederherstellung beim Empfang Ende. In diesem Leitfaden wird auf die Komplexität dieses Prozesses eingegangen.

Serverseitige Empfangslogik

Der Server richtet einen Socket-Listener ein, akzeptiert eingehende Verbindungen und initialisiert Datenströme für die Kommunikation . Der entscheidende Schritt besteht darin, die empfangenen Bytes zu lesen und sie in einer lokalen Datei zu speichern:

<code class="java">byte[] bytes = new byte[1024];
in.read(bytes);
FileOutputStream fos = new FileOutputStream("C:\test2.xml");
fos.write(bytes);</code>
Nach dem Login kopieren

Die Methode in.read(bytes) ruft die eingehenden Daten ab, während fos.write(bytes) sie in die lokale Datei schreibt Datei.

Clientseitige Sendelogik

Auf der Clientseite wird die Datei in ein Byte-Array eingelesen und die Daten werden dann über den Socket gesendet:

<code class="java">File file = new File("C:\test.xml");
long length = file.length();
byte[] bytes = new byte[(int) length];
// ...
out.write(bytes);</code>
Nach dem Login kopieren

Die out.write(bytes)-Methode sendet die konvertierten Dateibytes an den Server.

Verbesserung des Stream-Kopierens

Allerdings mit read und das direkte Schreiben von Methoden kann ineffizient sein. Stattdessen stellen InputStream und OutputStream die transferTo-Methode für eine schnellere Datenübertragung bereit:

<code class="java">int count;
byte[] buffer = new byte[8192];
while ((count = in.read(buffer)) > 0) {
  out.write(buffer, 0, count);
}</code>
Nach dem Login kopieren

Diese Technik automatisiert den Byte-Kopiervorgang und verbessert die Leistung erheblich.

Das obige ist der detaillierte Inhalt vonWie übertrage ich Dateien effizient über Sockets in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage