import javax.swing.*; import java.net.*; import java.awt.*; import java.io.*; import java.text.DateFormat; import java.util.*; public class Server implements Runnable { final static int PORT = 4321; Socket service; public Server () { init(); } private void init() { try { Dimension dimScrean = Toolkit.getDefaultToolkit().getScreenSize(); JFrame server = new JFrame("server"); server.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); Rectangle bounds = new Rectangle(); bounds.x = dimScrean.width / 2 - server.getWidth() / 2; bounds.y = dimScrean.height = server.getHeight(); server.setBounds(bounds); server.setVisible(true); // préparation du serveur // réseau ServerSocket ecoute = new ServerSocket(PORT); while (true) { service = ecoute.accept(); Thread t = new Thread(this); t.start(); } } catch (BindException be) { System.err.println("Le serveur a quitter car un autre et déjà en utilisation"); System.exit(-1); } catch (IOException ioe) { System.err.println(("Problème au niveau du serveur : "+ ioe.getMessage()) ); ioe.printStackTrace(); } } /** * Cette méthode créer et formate la date du jour @return String */ private String formateDate() { TimeZone tz = TimeZone.getTimeZone("Europe/Paris"); Calendar calendar = Calendar.getInstance(tz); Date date = new Date(); TimeZone.setDefault(TimeZone.getTimeZone("Europe/Paris")); calendar.setTime(date); DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.FRENCH); return ("ErrorReport_"+df.format(date)+" "+calendar.get(Calendar.HOUR_OF_DAY)+'_'+calendar.get(Calendar.MINUTE)+'_'+ calendar.get(Calendar.SECOND)+".txt").replace('/', '_'); } public void run () { File fileErrorOutput = new File (formateDate()); FileOutputStream fileError = null; PrintStream fosErrorSender = null; try { // acceper la requête BufferedReader rd = new BufferedReader(new InputStreamReader(service. getInputStream())); String str = null; fileError = new FileOutputStream(fileErrorOutput); fosErrorSender = new PrintStream(new BufferedOutputStream( fileError)); System.out.println("Nouvelle connection : " + fileErrorOutput.getName()); while (true) { while ( (str = rd.readLine()) != null) { System.out.println("Nouveau message d'erreur +" + fileErrorOutput.getName()); fosErrorSender.println(str); System.out.println(str); fosErrorSender.flush(); } fosErrorSender.close(); fileError.close(); if (fileErrorOutput.exists() && fileErrorOutput.length() == 0) { // aucune erreur n'est survenue fileErrorOutput.delete(); System.out.println("Le fichier a été supprimé"); } } } catch (FileNotFoundException fnfe) { System.err.println("Erreur lors de la suppression du fichier : "+fileErrorOutput.getName()); fnfe.printStackTrace(); } catch (IOException ioe) { System.out.println("Le client a quitté : "+formateDate()); if (! ioe.getMessage().contains("reset")) ioe.printStackTrace(); } } public static void main (String [] args) { new Server(); } }