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>
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>
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>
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!