import java.io.*; import java.net.*; public class SNFIS { public static void main(String []a) { try { ServerSocket s = new ServerSocket(61234); while (true) { System.err.println("Le serveur attend une connexion"); Socket service = s.accept(); System.err.println("Un client vient d'arriver"); InputStream lecture = service.getInputStream(); BufferedReader bf = new BufferedReader(new InputStreamReader(lecture)); OutputStream ecriture = service.getOutputStream(); PrintStream ps = new PrintStream(ecriture); String chaine = null; FileInputStream fis = null; boolean fin = false; while ( !fin && (chaine = bf.readLine()) != null ) { switch(chaine.charAt(0)) { case 'O': String fileName = chaine.substring(5); System.err.println("Un client souhaite ouvrir le fichier "+fileName); fileName = "repertoire/"+fileName; System.err.println("Sur le serveur il s'agit de "+fileName); fis = new FileInputStream(fileName); ps.println("OK"); ps.flush(); break; case 'R': System.err.println("Le client souhaite lire un octet"); int b = fis.read(); if (b!=-1) ps.println("OK "+(char)b); else ps.println("EOF"); ps.flush(); break; case 'C': System.err.println("Le client souhaite fermer le fichier"); fis.close(); fis = null; service.close(); fin = true; break; } } service.close(); } } catch(Exception e) { e.printStackTrace(); } } }