Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Server Locale - localServer.java

localServer.java

Caricato da: Er_tamponatore
Scarica il programma completo

  1. package programmi;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.DataOutputStream;
  5. import java.io.File;
  6. import java.io.FileInputStream;
  7. import java.io.FileReader;
  8. import java.io.FileWriter;
  9. import java.io.IOException;
  10. import java.io.InputStream;
  11. import java.io.InputStreamReader;
  12. import java.io.OutputStream;
  13. import java.io.PrintWriter;
  14. import java.net.InetAddress;
  15. import java.net.ServerSocket;
  16. import java.net.Socket;
  17. import java.util.Scanner;
  18.  
  19. public class localServer {
  20.         static Scanner input = new Scanner(System.in);
  21.         public static void main(String[] args) {
  22. //              Stampe iniziali dalla parte del server
  23.                 System.out.println("*******************************************************");
  24.                 System.out.println("    Questo e' un server locale in FTP");
  25.                 System.out.println("    ti ci puoi collegare tramite un client");
  26.                 System.out.println("    come telnet da un qualsiasi coputer locale");
  27.                 System.out.println("*******************************************************\n\n");
  28.                 int port1,port2;
  29. //              vengono inseriti i numeri delle porte su cui il server sara' in ascolto
  30.                 while(true){
  31.                         try{
  32.                                 System.out.print("Inserisci il primo numero di porta: ");
  33.                                 port1=input.nextInt();
  34.                                 break;
  35.                         }catch(Exception exc){}}
  36.                 while(true){
  37.                         try{
  38.                                 System.out.print("Inserisci il secondo numero di porta: ");
  39.                                 port2=input.nextInt();
  40.                                 break;
  41.                         }catch(Exception exc){}}
  42. //              Ciclo che si ripete tante volte quante sono il numero di porte da aprire
  43.                 for(int i=port1;i<=port2;i++){
  44.                         serverThread.port1=i;
  45.                         Thread t=new Thread(new serverThread());
  46.                         t.start();
  47. //                      faccio aspettare il thread per 0,1 secondi per dare il tempo al secondo thread
  48. //                      di partire sulla porta assegnata
  49.                         try {
  50.                                 Thread.sleep(100);
  51.                         } catch (InterruptedException e) {}}
  52.         }
  53.  
  54. }
  55. //Per ogni porta verra usato un thread che è questo |  |
  56. //                                                                                                      V  V
  57. class serverThread implements Runnable{
  58.         static int port1;
  59.  
  60.         public String correttore(String stringa){
  61.                 char back='\b';
  62.                 String corretta="";
  63.                 String s="";
  64.                 for(int i =0;i<stringa.length();i++){
  65.                         try{
  66.                                 if(stringa.charAt(i)==back){
  67.                                         for(int j =0;j<i-1;j++){
  68.                                                 s=s+corretta.charAt(j);
  69.                                         }
  70.                                         corretta=s;
  71.                                 }
  72.                                 else{
  73.                                         corretta=corretta+stringa.charAt(i);
  74.                                 }
  75.                         }
  76.                         catch(Exception exc){}
  77.                 }return corretta;
  78.         }
  79.  
  80.         public void server() throws IOException, InterruptedException{
  81. //              Dichiaro la socket che sara il client
  82.                 Socket client;
  83. //              controllo che ci sia la cartella chiamata server dova andranno registrati gli utenti
  84. //              che si registrano al server
  85.                 try{
  86.                         File cartella_server = new File("server/");
  87.                         if(cartella_server.isDirectory()){}
  88.                         else cartella_server.mkdir();
  89.                 }catch(Exception exc){}
  90.                 int port = port1;
  91.                 while(true){
  92.                         System.out.println();
  93.                         System.out.println("Lanciando il server sulla porta: "+port);
  94.                         ServerSocket server = new ServerSocket(port);
  95.                         System.out.println("Server lanciato");
  96.                         System.out.println("Server in ascolto...");
  97.                         client = server.accept();
  98.                         System.out.println("Richiesta di connessione da: "+client.getInetAddress());
  99.                         try{
  100. //                              Ottengo gli Input/Oputput stream del client
  101.                                 InputStream i = client.getInputStream();
  102.                                 OutputStream o = client.getOutputStream();
  103. //                              Dichiaro gli stream che serviranno per comunicare con il client
  104.                                 PrintWriter pw = new PrintWriter(o, true);
  105.                                 BufferedReader br=new BufferedReader(new InputStreamReader(i));
  106.                                 String nome,password;
  107.                                 String Help = "help";
  108.                                 String Cls="cls";
  109.                                 String Quit = "quit";
  110.                                 String Informazioni = "info";
  111.                                 boolean b ;
  112.                                 pw.println("BENVENUTO NEL SERVER...");
  113.                                 pw.println(" ");
  114.                                 pw.println("Accedi con il tuo account...");
  115.                                 pw.flush();
  116.                                 while(true){
  117.                                         pw.print("sei gia' registrato?(s/n) ");
  118.                                         pw.flush();
  119.                                         String scelta=correttore(br.readLine());
  120.                                         if(scelta.equalsIgnoreCase("s")){
  121.                                                 pw.print("Nome: ");
  122.                                                 pw.flush();
  123.                                                 nome = correttore(br.readLine());
  124.                                                 pw.print("Password: ");
  125.                                                 pw.flush();
  126.                                                 password = correttore(br.readLine());
  127.                                                 try{
  128.                                                         System.out.println("L'utente "+client.getInetAddress().getHostName()+" ha eseguito l'accesso.");
  129.                                                         FileReader fr = new FileReader(new File("server/"+nome+"/password.dat"));
  130.                                                         Scanner scan = new Scanner(fr);
  131.                                                         String pass = scan.nextLine();
  132.                                                         if(pass.equals(password)){
  133.                                                                 pw.println("Accesso consentito...");
  134.                                                                 pw.flush();
  135.                                                                 break;
  136.                                                         }
  137.                                                         else{
  138.                                                                 pw.println("Nome o password errati...");pw.flush();
  139.                                                         }}catch(Exception exc){pw.println("Password o nome errati...");pw.flush();}
  140.                                         }else if(scelta.equalsIgnoreCase("n")){
  141.                                                 pw.println("Registrazione... ");
  142.                                                 pw.println(" ");
  143.                                                 pw.flush();
  144.                                                 System.out.println("1");
  145.                                                 while(true){
  146.                                                         pw.print("Nome: ");
  147.                                                         pw.flush();
  148.                                                         nome = correttore(br.readLine());
  149.                                                         if(nome=="") {pw.println("Devi inserire un nome...");pw.flush();}
  150.                                                         else if((new File("server/"+nome)).exists())pw.println("Il nome digitato e' gia esistente...");
  151.                                                         else break;
  152.                                                 }
  153.                                                 while(true){
  154.                                                         System.out.println("L'utente "+client.getInetAddress().getHostName()+" si sta registrando.");
  155.                                                         pw.print("Password: ");
  156.                                                         pw.flush();
  157.                                                         password = correttore(br.readLine());
  158.                                                         if(password==""){pw.println("Devi inserire una password...");pw.flush();}
  159.                                                         else break;
  160.                                                 }
  161.                                                 (new File("server/"+nome)).mkdir();
  162.                                                 File account = new File("server/"+nome+"/password.dat");
  163.                                                 System.out.println("4");
  164.                                                 FileWriter fw = new FileWriter(account);
  165.                                                 System.out.println("5");
  166.                                                 fw.write(password);
  167.                                                 fw.flush();
  168.                                                 fw.close();
  169.                                                 break;
  170.                                         }
  171.                                 }
  172.                                 System.out.println("L'utente"+client.getInetAddress().getHostName()  +" ha eseguito l'accesso al server.");
  173.                                 b=true;
  174.                                 pw.println(" ");
  175.                                 pw.println("Comandi disponibili:");
  176.                                 pw.println("Help:       mostra questa schermata.");
  177.                                 pw.println("Cls:        pulisce lo schermo.");
  178.                                 pw.println("Quit:       chiude la connessione al server.");
  179.                                 pw.println("Info:       stampa delle informazioni sulla connessione.");
  180.                                 pw.flush();
  181.                                 pw.println(" ");
  182.                                 while(b){
  183.                                         pw.println(" ");
  184.                                         pw.print("> ");
  185.                                         pw.flush();
  186.                                         String command = correttore(br.readLine());
  187.                                         pw.println(" ");
  188.                                         if(Help.equalsIgnoreCase(command)){
  189.                                                 pw.println("Comandi disponibili:");
  190.                                                 pw.println("Help:mostra questa schermata.");
  191.                                                 pw.println("Cls: pulisce lo schermo.");
  192.                                                 pw.println("Quit:Chiude la connessione al server.");
  193.                                                 pw.println("Info: stampa delle informazioni sulla connessione.");
  194.                                         }else if(Cls.equalsIgnoreCase(command)){
  195.                                                 pw.println("\033[H\033[2J");
  196.                                                 pw.flush();
  197.                                         }else if(Quit.equalsIgnoreCase(command)){
  198.                                                 pw.println("La connessione al server verra' chiusa...");
  199.                                                 Thread.sleep(1000);
  200.                                                 break;
  201.                                         }else if(Informazioni.equalsIgnoreCase(command)){
  202.                                                 pw.println("Info client:");
  203.                                                 pw.println("Porta: "+client.getLocalPort());
  204.                                                 pw.println("IP: "+client.getInetAddress());
  205.                                                 pw.println();
  206.                                                 pw.println("Info server:");
  207.                                                 pw.println("Porta: "+port);
  208.                                                 pw.println("IP: "+InetAddress.getLocalHost().getHostAddress());
  209.                                                 pw.println();
  210.                                                 pw.println("Memoria libera del server: "+(new File("c:/").getFreeSpace()/1024/1024/1024)+"/"+(new File("c:/").getTotalSpace()/1024/1024/1024)+" GB");
  211.                                                 pw.println();
  212.                                                 pw.println("Tutti gli utenti registrati al server: ");
  213.                                                 pw.flush();
  214.                                                 String[] cartella = new File("server/").list();
  215.                                                 System.out.println(1);
  216.                                                 for(int j= 0;j<cartella.length;j++){
  217.                                                         System.out.println(2);
  218.                                                         pw.println(""+(j+1)+") "+cartella[j]);
  219.                                                         pw.flush();
  220.                                                 }
  221.                                         }else{
  222.                                                 pw.println("Il comando digitato non esiste");
  223.                                         }
  224.                                 }
  225.                         }catch(IOException e){
  226.                                 System.out.println("Errore di connessione...");
  227.                         }finally{
  228.                                 System.out.println("connessione chiusa con: "+client.getInetAddress());
  229.                                 client.close();
  230.                                 System.out.println("Connessione con il Client chiusa.");
  231.                                 server.close();
  232.                                 System.out.println("Il server non e' piu in ascolto.");
  233.                         }
  234.                 }
  235.         }
  236.         public void run(){
  237.                 try {
  238.                         server();
  239.                 } catch (IOException e) {} catch (InterruptedException e) {}
  240.         }
  241. }