AIUTOOOOOOOO.......

di il
1 risposte

AIUTOOOOOOOO.......

Salve a tutti.....e' la prima volta che scrivo su questo forum,avrei bisogno di un aiutino...io devo sviluppare questo programma:
"Sviluppare un server http che possa servire richieste di file statici dal Filesystem locale. Il Server deve
supportare richieste in formato http 1.0 e produrre una risposta nello stesso formato. Pertanto deve implementare
le funzionalità per il parsing di richieste http 1.0 inclusa la separazione delle componenti di una richiesta
<metodo-path-stringaquery>. Se la richiesta è del tipo supportato (file statico), il server invia la risposta e
il contenuto del file; altrimenti, invia comunque la risposta “501 Not Implemented”.
Specificare:
la struttura implementativi fornendo una descrizione della classi e dei metodi creati e dei passi base
necessari per stabilire le connessioni con i client e per comunicare."


L'ho sviluppato in questo modo e funziona....praticamente quando richiamo: http://localhost:650/prova.htm mi trova il mio file e lo apre regolarmente ovviamente se il mio file prova.html si trova nella stessa directory del mio programma ServerHTTP. Ora il mio problema e' ke devo fare in modo ke mi apra il mio file anche se si trova in un'altra directory....avrei bisogno di qualche metodo che mi effettui la ricerca!Ho provato con i vari getPath(), getAbsolutePath(), ecc....ma nn ho ricavato nulla di utile!!
Sapreste darmi una mano???o all'esame la prof. mi rimanda a casa!!
Grazie mille x la disponibilita'.......


Il programma e' questo:

import java.io.*;
import java.net.*;
import java.util.*;
public class ServerHTTP implements Runnable {
protected Socket cliente;
public StringTokenizer sequenza;
public StringTokenizer seq;
private String richiesta;
private String metodo;
private String path,pat;
private String stringaquery;
//costruttore
public ServerHTTP (Socket cliente){
this.cliente=cliente;
}
public void run(){
boolean trovata=false;
try{
BufferedReader in = new BufferedReader(new InputStreamReader(cliente.getInputStream()));
OutputStream output = cliente.getOutputStream();
PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(output), true);
richiesta=in.readLine(); //inizio del parsing
System.out.println ("Richiesta: "+richiesta);
sequenza = new StringTokenizer (richiesta);//utilizza StringTokenizer per esaminare il testo della richiesta
if (richiesta.indexOf("HTTP/") != -1){
metodo = sequenza.nextToken();
if (metodo.equals("GET")){
path = sequenza.nextToken();
if (path.endsWith(".html")){
stringaquery = sequenza.nextToken();
if (stringaquery.equals("HTTP/1.1")){
System.out.println ("La richiesta immessa e' accettata");
trovata = true;}
}
}
}
seq = new StringTokenizer (richiesta);
richiesta = seq.nextToken();
if ((richiesta = seq.nextToken()).startsWith("/")){
richiesta = richiesta.substring(1);}
try {
FileInputStream file = new FileInputStream (richiesta);
if (trovata ==true){
byte [] buf = new byte[file.available()]; //available() restituisce il numero di byte che possono
//essere letti senza bloccarsi, cioe' che sono disponibili
file.read(buf); //legge il file nell'array
output.write(buf); //scrive i byte contenuti nell'array
output.flush(); // scarica lo stream scrivendo effettivamente i dati del buffer
file.close(); //chiude il file
}else if (trovata == false){
PrintStream printStream = new PrintStream(output);
printStream.print("501 Not Implemented");}
} catch (FileNotFoundException e) {printWriter.println("File non trovato");}
cliente.close(); //chiude la connessione con il cliente
}catch (IOException e) {System.out.println("Si e' verificato un errore"); }

}
public static void main (String[] args) throws IOException {
int port=650;
ServerSocket serverSocket=new ServerSocket(port);//crea un oggetto di classe ServerSocket specificando un
//numero di porta locale
System.out.println("Inizio....");
while (true){
Socket cliente=serverSocket.accept(); //attende connessioni dal client
ServerHTTP serverHTTP = new ServerHTTP (cliente);
ReThread reThread = new ReThread (serverHTTP);
reThread.start(); //lancia il reThread,(invoca run()) e ritorna al chiamante
}
}
}

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte