Envoi et réception de fichiers binaires via Java Sockets
Dans cette discussion, nous approfondissons les subtilités de l'envoi et de la réception de fichiers au format binaire ( tableaux d'octets) sur les sockets Java.
Analysons d'abord l'implémentation du serveur. Le serveur écoute sur le port 4444 et lit les données du client à l'aide de la méthode read(). Cette méthode nécessite une taille de tampon prédéfinie, qui dans ce cas est définie sur 1 024 octets. Cependant, cette approche présente une limite. Si le fichier en cours de transfert est plus grand que la taille du tampon, seule une partie du fichier sera reçue, entraînant une corruption des données.
Le code client, quant à lui, tente d'écrire le contenu du fichier " test.xml" au flux de sortie à l'aide de la méthode write(). Cependant, avant d'envoyer les données, il est crucial de déterminer la taille du fichier. Si la taille du fichier dépasse la valeur entière maximale (Integer.MAX_VALUE), une erreur se produira.
Pour résoudre ces problèmes et garantir un transfert de fichiers fiable, une approche plus robuste est recommandée. Le code ci-dessous montre la manière correcte de copier un flux d'octets à l'aide d'un tampon :
<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>
En utilisant un tampon et en parcourant les données jusqu'à ce que la fin du flux soit atteinte, nous pouvons gérer efficacement les fichiers de n'importe quel taille.
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!