


Comment utiliser les instructions de boucle while pour traiter les liens clés en Java
Code Java
<ol class=" list-paddingleft-2"> <li><p>public void handleConnection(Socket connectionToHandle) { </p></li> <li><p>new Thread(new ConnectionHandler(connectionToHandle)).<br>start(); </p></li> <li><p>} </p></li> <li><p>public void handleConnection(Socket connectionToHandle) { </p></li> <li><p>new Thread(new ConnectionHandler(connectionToHandle)).<br>start(); </p></li> <li><p>} </p></li> </ol>
Les grands changements que nous avons apportés à RemoteFileServer se reflètent dans cette méthode. Nous appelons toujours handleConnection() une fois que le serveur a accepté une connexion, mais nous passons maintenant le Socket à une instance de ConnectionHandler, qui est Runnable. Nous créons un nouveau Thread avec ConnectionHandler et le démarrons. La méthode run() de ConnectionHandler contient le code pour la lecture/écriture de Socket et la lecture de fichier, qui se trouve à l'origine dans handleConnection() de RemoteFileServer.
4. Gestion des connexions : Partie 2
Voici la structure de la classe ConnectionHandler :
Code Java
import java.io.*; import java.net.*; public class ConnectionHandler implements Runnable{ Socket socketToHandle; public ConnectionHandler(Socket aSocketToHandle) { socketToHandle = aSocketToHandle; } public void run() { } } import java.io.*; import java.net.*; public class ConnectionHandler implements Runnable{ Socket socketToHandle; public ConnectionHandler(Socket aSocketToHandle) { socketToHandle = aSocketToHandle; } public void run() { }
Cette classe d'assistance est assez simple. Comme nos autres classes jusqu'à présent, nous importons java.net et java.io . Cette classe n'a qu'une seule variable d'instance, socketToHandle, qui contient le Socket géré par cette instance. Le constructeur de la classe prend une instance Socket comme paramètre et l'assigne à socketToHandle.
Veuillez noter que cette classe implémente l'interface Runnable. Les classes qui implémentent cette interface doivent implémenter la méthode run(), ce que fait notre classe. Nous explorerons les détails de run() plus tard. Sachez maintenant qu'il gérera réellement la connexion, en utilisant le même code que nous avons vu précédemment dans la classe RemoteFileServer.
Implémentation de run()
Ici, nous implémentons la méthode run(), qui récupérera le flux de notre connexion, l'utilisera pour lire et écrire la connexion, et la fermera une fois la tâche terminée :
Code Java
public void run() { try { PrintWriter streamWriter = new PrintWriter(socketToHandle.getOutputStream()); BufferedReader streamReader = new BufferedReader(new InputStreamReader(socketToHandle.getInputStream())); String fileToRead = streamReader.readLine(); BufferedReader fileReader = new BufferedReader(new FileReader(fileToRead)); String line = null; while ((line = fileReader.readLine()) != null) streamWriter.println(line); fileReader.close(); streamWriter.close(); streamReader.close(); } catch (Exception e) { System.out.println("Error handling a client: " + e); } } public void run() { try { PrintWriter streamWriter = new PrintWriter(socketToHandle.getOutputStream()); BufferedReader streamReader = new BufferedReader(new InputStreamReader(socketToHandle.getInputStream())); String fileToRead = streamReader.readLine(); BufferedReader fileReader = new BufferedReader(new FileReader(fileToRead)); String line = null; while ((line = fileReader.readLine()) != null) streamWriter.println(line); fileReader.close(); streamWriter.close(); streamReader.close(); } catch (Exception e) { System.out.println("Error handling a client: " + e); } }
ConnectionHandler La méthode run() fait ce que fait handleConnection() sur RemoteFileServer. Tout d’abord, nous encapsulons InputStream et OutputStream (en utilisant getOutputStream() et getInputStream() de Socket respectivement dans BufferedReader et PrintWriter. Nous utilisons ensuite ce code pour lire le fichier cible ligne par ligne :
Code Java
FileReader fileReader = new FileReader(new File(streamReader.readLine())); BufferedReader bufferedFileReader = new BufferedReader(fileReader); String line = null; while ((line = bufferedFileReader.readLine()) != null) { streamWriter.println(line); } FileReader fileReader = new FileReader(new File(streamReader.readLine())); BufferedReader bufferedFileReader = new BufferedReader(fileReader); String line = null; while ((line = bufferedFileReader.readLine()) != null) { streamWriter.println(line); }
N'oubliez pas que nous devons obtenir un chemin de fichier valide du client, alors construisez un nouveau fichier avec ce nom de chemin, enveloppez-le dans un FileReader pour gérer la lecture le fichier, puis l'enveloppe dans un BufferedReader qui nous permet de lire le fichier ligne par ligne. Nous appelons readLine() sur BufferedReader dans une instruction Java while jusqu'à ce qu'il n'y ait plus de lignes à lire. Veuillez noter que l'appel à readLine() se bloquera jusqu'à ce qu'un octet arrive. Après avoir récupéré quelques octets, nous les mettons dans la variable de ligne locale et les écrivons au client.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du numéro Armstrong en Java. Nous discutons ici d'une introduction au numéro d'Armstrong en Java ainsi que d'une partie du code.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est
