package programmi;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class localServer {
static Scanner input
= new Scanner
(System.
in);
public static void main
(String[] args
) {
// Stampe iniziali dalla parte del server
System.
out.
println("*******************************************************");
System.
out.
println(" Questo e' un server locale in FTP");
System.
out.
println(" ti ci puoi collegare tramite un client");
System.
out.
println(" come telnet da un qualsiasi coputer locale");
System.
out.
println("*******************************************************\n\n");
int port1,port2;
// vengono inseriti i numeri delle porte su cui il server sara' in ascolto
while(true){
try{
System.
out.
print("Inserisci il primo numero di porta: ");
port1=input.nextInt();
break;
while(true){
try{
System.
out.
print("Inserisci il secondo numero di porta: ");
port2=input.nextInt();
break;
// Ciclo che si ripete tante volte quante sono il numero di porte da aprire
for(int i=port1;i<=port2;i++){
serverThread.port1=i;
t.start();
// faccio aspettare il thread per 0,1 secondi per dare il tempo al secondo thread
// di partire sulla porta assegnata
try {
}
}
//Per ogni porta verra usato un thread che è questo | |
// V V
static int port1;
char back='\b';
for(int i =0;i<stringa.length();i++){
try{
if(stringa.charAt(i)==back){
for(int j =0;j<i-1;j++){
s=s+corretta.charAt(j);
}
corretta=s;
}
else{
corretta=corretta+stringa.charAt(i);
}
}
}return corretta;
}
// Dichiaro la socket che sara il client
// controllo che ci sia la cartella chiamata server dova andranno registrati gli utenti
// che si registrano al server
try{
File cartella_server
= new File("server/");
if(cartella_server.isDirectory()){}
else cartella_server.mkdir();
int port = port1;
while(true){
System.
out.
println("Lanciando il server sulla porta: "+port
);
System.
out.
println("Server lanciato");
System.
out.
println("Server in ascolto...");
client = server.accept();
System.
out.
println("Richiesta di connessione da: "+client.
getInetAddress());
try{
// Ottengo gli Input/Oputput stream del client
// Dichiaro gli stream che serviranno per comunicare con il client
boolean b ;
pw.println("BENVENUTO NEL SERVER...");
pw.println(" ");
pw.println("Accedi con il tuo account...");
pw.flush();
while(true){
pw.print("sei gia' registrato?(s/n) ");
pw.flush();
String scelta
=correttore
(br.
readLine());
if(scelta.equalsIgnoreCase("s")){
pw.print("Nome: ");
pw.flush();
nome = correttore(br.readLine());
pw.print("Password: ");
pw.flush();
password = correttore(br.readLine());
try{
System.
out.
println("L'utente "+client.
getInetAddress().
getHostName()+" ha eseguito l'accesso.");
Scanner scan = new Scanner(fr);
String pass
= scan.
nextLine();
if(pass.equals(password)){
pw.println("Accesso consentito...");
pw.flush();
break;
}
else{
pw.println("Nome o password errati...");pw.flush();
}}catch(Exception exc
){pw.
println("Password o nome errati...");pw.
flush();}
}else if(scelta.equalsIgnoreCase("n")){
pw.println("Registrazione... ");
pw.println(" ");
pw.flush();
while(true){
pw.print("Nome: ");
pw.flush();
nome = correttore(br.readLine());
if(nome=="") {pw.println("Devi inserire un nome...");pw.flush();}
else if((new File("server/"+nome
)).
exists())pw.
println("Il nome digitato e' gia esistente...");
else break;
}
while(true){
System.
out.
println("L'utente "+client.
getInetAddress().
getHostName()+" si sta registrando.");
pw.print("Password: ");
pw.flush();
password = correttore(br.readLine());
if(password==""){pw.println("Devi inserire una password...");pw.flush();}
else break;
}
(new File("server/"+nome
)).
mkdir();
File account
= new File("server/"+nome
+"/password.dat");
fw.write(password);
fw.flush();
fw.close();
break;
}
}
System.
out.
println("L'utente"+client.
getInetAddress().
getHostName() +" ha eseguito l'accesso al server.");
b=true;
pw.println(" ");
pw.println("Comandi disponibili:");
pw.println("Help: mostra questa schermata.");
pw.println("Cls: pulisce lo schermo.");
pw.println("Quit: chiude la connessione al server.");
pw.println("Info: stampa delle informazioni sulla connessione.");
pw.flush();
pw.println(" ");
while(b){
pw.println(" ");
pw.print("> ");
pw.flush();
String command
= correttore
(br.
readLine());
pw.println(" ");
if(Help.equalsIgnoreCase(command)){
pw.println("Comandi disponibili:");
pw.println("Help:mostra questa schermata.");
pw.println("Cls: pulisce lo schermo.");
pw.println("Quit:Chiude la connessione al server.");
pw.println("Info: stampa delle informazioni sulla connessione.");
}else if(Cls.equalsIgnoreCase(command)){
pw.println("\033[H\033[2J");
pw.flush();
}else if(Quit.equalsIgnoreCase(command)){
pw.println("La connessione al server verra' chiusa...");
break;
}else if(Informazioni.equalsIgnoreCase(command)){
pw.println("Info client:");
pw.println("Porta: "+client.getLocalPort());
pw.println("IP: "+client.getInetAddress());
pw.println();
pw.println("Info server:");
pw.println("Porta: "+port);
pw.
println("IP: "+InetAddress.
getLocalHost().
getHostAddress());
pw.println();
pw.
println("Memoria libera del server: "+(new File("c:/").
getFreeSpace()/1024/1024/1024)+"/"+(new File("c:/").
getTotalSpace()/1024/1024/1024)+" GB");
pw.println();
pw.println("Tutti gli utenti registrati al server: ");
pw.flush();
for(int j= 0;j<cartella.length;j++){
pw.println(""+(j+1)+") "+cartella[j]);
pw.flush();
}
}else{
pw.println("Il comando digitato non esiste");
}
}
System.
out.
println("Errore di connessione...");
}finally{
System.
out.
println("connessione chiusa con: "+client.
getInetAddress());
client.close();
System.
out.
println("Connessione con il Client chiusa.");
server.close();
System.
out.
println("Il server non e' piu in ascolto.");
}
}
}
public void run(){
try {
server();
}
}