Transfert de fichiers sur sockets en Java
Le transfert de fichiers entre sockets nécessite de transformer les fichiers en tableaux d'octets, de les transmettre et de les reconstituer à la réception fin. Ce guide aborde les complexités rencontrées dans ce processus.
Logique de réception côté serveur
Le serveur établit un écouteur de socket, accepte les connexions entrantes et initialise les flux de données pour la communication. . L'étape critique consiste à lire les octets reçus et à les enregistrer dans un fichier local :
<code class="java">byte[] bytes = new byte[1024]; in.read(bytes); FileOutputStream fos = new FileOutputStream("C:\test2.xml"); fos.write(bytes);</code>
La méthode in.read(bytes) récupère les données entrantes, tandis que fos.write(bytes) les écrit dans le fichier local. fichier.
Logique d'envoi côté client
Côté client, le fichier est lu dans un tableau d'octets et les données sont ensuite envoyées via le socket :
<code class="java">File file = new File("C:\test.xml"); long length = file.length(); byte[] bytes = new byte[(int) length]; // ... out.write(bytes);</code>
La méthode out.write(bytes) envoie les octets du fichier converti au serveur.
Amélioration de la copie de flux
Cependant, en utilisant read et écrire directement des méthodes peut être inefficace. Au lieu de cela, InputStream et OutputStream fournissent la méthode transferTo pour un transfert de données plus rapide :
<code class="java">int count; byte[] buffer = new byte[8192]; while ((count = in.read(buffer)) > 0) { out.write(buffer, 0, count); }</code>
Cette technique automatise le processus de copie d'octets et améliore considérablement les performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!