Maison > Java > javaDidacticiel > le corps du texte

Comment transférer efficacement des fichiers via des sockets en Java ?

Mary-Kate Olsen
Libérer: 2024-11-04 05:52:29
original
1003 Les gens l'ont consulté

How to Efficiently Transfer Files over Sockets in Java?

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal