Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi N - Z > Reti di calcolatori
 
[ESERCIZIO] Esercizio Web Server Java
Clicca QUI per vedere il messaggio nel forum
internato
Suvvia, raccogliamo un pò di suggerimenti sull'ultimo esercizio di Reti...forza Futurbaggio e Dagarlas, fatevi avanti e illuminateci, senza esagerare...
ho provato a fare qualcosa spulciando il testo in .pdf messo a disposizione da Eugenio Cassiano, ma credo proprio che quanto sto elaborando non possa mai funzionare....aiutate chi come me ha seri, serissimi problemi cn la programmazione....

Dodo
Originally posted by internato
Suvvia, raccogliamo un pò di suggerimenti sull'ultimo esercizio di Reti...forza Futurbaggio e Dagarlas, fatevi avanti e illuminateci, senza esagerare...
ho provato a fare qualcosa spulciando il testo in .pdf messo a disposizione da Eugenio Cassiano, ma credo proprio che quanto sto elaborando non possa mai funzionare....aiutate chi come me ha seri, serissimi problemi cn la programmazione....

mi unisco a internato... illuminateci! :lode:

futurbaggio
A lezione non ero presente, qualcuno può specificare dove si trova il pdf?

Grazie
Roberto

internato
dovrebbe essere nella sezione materiale didattico o diario delle lezioni di reti.dico.unimi.it...dai futur che ce la fai...

internato
ho scritto qualcosa che sicuramente è pieno di errori e parti mancanti....ma se lo correggete capisco cosa manca e perchè...grazie




import java.io.* ;
import java.net.* ;
import java.util.* ;


public final class WebServer
{

public static void main(String argv[] throws Exception);
{
//Imposta il numero di porta
try{Serversocket server = new ServerSocket(6789)
}
while(true){
//accettaz connessione con la socket

HttpRequest request=new HttpRequest(6789);
Thread thread = new Thread(request);
thread.start();
}
}
}


final class HttpRequest implements Runnable
{ final static String CRLF = "\r\n";
Socket socket;
//Costruttore
public HttpRequest(Socket socket) throws Exception
{
this.socket=socket;

}

public void run()
{
try{
processRequest();
}catch(Exception e){System.out.println(e);
}
}

private void processRequest() throws Exception
{
InputStream is= socket.getInputStream();
DataOutputStream os= new DataOutputStream(socket.getOutputStream());
BufferedReader br= socket.readLine();
String requestLine= ??;
System.out.println();
System.out.println(requestLine)
String headerLine = null;
while((headerLine=br.readLine()).lenght() != 0)
{
System.out.println(headerLine)
}

os.close();
br.close();
socket.close();

}


}

futurbaggio
Originally posted by internato
dovrebbe essere nella sezione materiale didattico o diario delle lezioni di reti.dico.unimi.it...dai futur che ce la fai...


Grazie, l'ho trovato... ora lo leggo, anche se da un primo sguardo al tuo codice mi sembra che manchi la chiamata ad accept() di ServerSocket.

Roberto

dagarlas
Ha ragione futurbaggio; nel tuo codice hai scritto HttpRequest request=new HttpRequest(6789);

ma a quel punto tu stai creando un nuovo oggetto HttpRequest passandogli un'intero che nn ha senso e se guardi nel costruttore di httprequest vedi che richiede una socket come parametro, quindi dovresti scrivere:

HttpRequest request=new HttpRequest(server.accept());

ossia passi come parametro la socket ritornata da server.accept() che è quella attraverso cui avviene poi la comunicazione

papousek
Originally posted by dagarlas
Ha ragione futurbaggio; nel tuo codice hai scritto HttpRequest request=new HttpRequest(6789);

ma a quel punto tu stai creando un nuovo oggetto HttpRequest passandogli un'intero che nn ha senso e se guardi nel costruttore di httprequest vedi che richiede una socket come parametro, quindi dovresti scrivere:

HttpRequest request=new HttpRequest(server.accept());

ossia passi come parametro la socket ritornata da server.accept() che è quella attraverso cui avviene poi la comunicazione



ma ma ma ...che lingua parlate????

...sob...scusate ma so veramente poco di java...help!!!

internato
naturalmente questa è solo una delle 150000 cose sbagliate del mio codice....se no....sono proprio un figo...e mi pomperò all'inverosimile!!!!

Barone
Originally posted by internato
naturalmente questa è solo una delle 150000 cose sbagliate del mio codice....se no....sono proprio un figo...e mi pomperò all'inverosimile!!!!


Off-Topic:
internato...che babbo..
:D

citrus
ciao a tutti....
sono riuscito a fare l'esercizio ma con qualche piccola "irregolarità" che non riesco a risolvere......
ad ex. il content-type e lo status mi vengono stampati a video all'inizio della pagina come fosse una normale stringa.....
non dovrebbero invece trovarsi nell'header della pagina html che visualizzo e quindi rimanere nascosti?

ho provato a dare un occhiata al documento RFC1945 in cerca di una sintassi "particolare" per inviare questi dati ma non sono riuscito a capire l'errore.......
secondo voi è richiesto nell'esercizio che cose di questo tipo funzionino correttamente?
(visto i continui rimandi all' RFC ho pensato di si....)

qualcuno ha il mio stesso problema?
è normale?

internato
cos'è che ti vengono stampati a video???????!!!!!!!!!!
pensavo di sapere qualcosa in più ma ora ripiombo nella cacca....

citrus
Originally posted by internato
cos'è che ti vengono stampati a video???????!!!!!!!!!!
pensavo di sapere qualcosa in più ma ora ripiombo nella cacca....


praticamente sono le stringe che nel pdf di cassani si chiamano statusLine e contentTypeLine (se non sbaglio).....
a quanto ne so io queste sono header che vengono inviate al browser ma poi effettivamente a video si dovrebbe vedere solo il corpo della pagina che è contenuto in entityBody.....
io penso che sia una cosa che dobbiamo risolvere noi smazzaandoci il documento di descrizione del protocollo http...
però magari mi sbaglio.....

ma il prof cassani che voi sappiate non legge il forum?
magari può darci qualche indicazione (probabilmente sto dicendo fesserie io quindi sarebbe meglio chiarire..)

m@cCo
Citrus il tuo problema deriva dal fatto che non hai utilizzato le status line definite dal documento ufficiale.

Usando il formato corretto le pagine vengono visualizzate tranquillamente.

HTTP/1.0 200 OK
HTTP/1.0 404 File Not Found

Ciao

citrus
Originally posted by m@cCo
Citrus il tuo problema deriva dal fatto che non hai utilizzato le status line definite dal documento ufficiale.

Usando il formato corretto le pagine vengono visualizzate tranquillamente.

HTTP/1.0 200 OK
HTTP/1.0 404 File Not Found

Ciao


grande maccuz!
più tardi provo a correggere....
a la füla büla...
:D

m@cCo
Boh dà ancora dei problemucci...forse con estensioni non previste...cmq in generale al va bec, oh yeah! :D

Ciao

yeah
Esattamente quanto delle specifiche deve essere implementato?

Nella mia versione mi limito a leggere la pagina richiesta dal client, se non c'è (è arrivato "/") mando la stringa "HTTP/1.0 200 OK\r\n" e poi la pagina predefinita.

Se viene chiesta una pagina, se la pag esiste mando la stringa di OK e la pagina, altrimenti mando la stringa del 404.

Provando a collegare uno dei client degli altri esercizi ad un server qualsiasi, però, prima della pagina html ricevo un sacco di altre cose, bisonga implementare altro?

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate