Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Reti di calcolatori (http://www.dsy.it/forum/forumdisplay.php?forumid=68)
-- [info] Appello 1 Aprile (http://www.dsy.it/forum/showthread.php?threadid=18271)
appello 1 aprile
Ciao a Tutti!
Volevo sapere se coloro che hanno dato la parte di laboratorio negli ultimi tre appelli (gennaio, febbraio, marzo) si ricordavano quali fossero le richieste del docente.
Ripeto: la parte di laboratorio!!
Ho già letto qualcosa a proposito scritto da futurbaggio...
Sembrerebbe che di codice vero e proprio da scrivere ci sia solo java...su c solo domande sulle primitive...
altre informazioni?
Ringrazio tutti!!
CiaoCiao!
__________________
Allora, ti faccio un breve riassuntino!
La parte di laboratorio consta di 4 moduli:
-Primo modulo: domande a risposta chiusa sul linguaggio C. Riguardano i metodi e i parametri da passare soprattutto. Se studi sulle slide di Cassiano, a un 90% ti assicuro che puoi arrivare ( )
-Secondo, terzo e quarto modulo: scrittura del CODICE che esegue una particolare richiesta. La richiesta è la stessa per tutti e quattro i turni dell'esame, solo che due di questi dovranno implementarla in UDP, due in TCP.
Negli ultimi due esami (quello del 28 Gennaio e quello del 1 Marzo) i tre moduli su Java chiedevano rispettivamente il client, il server e il server multithread di un programma che rispondeva a certe richieste..quindi PENSO proprio che anche all'appello del primo aprile si chiederà di implementare un client, un server e un server multithread, ovviamente che faranno cose diverse da quelle richieste nei precedenti appelli!
All'appello del 1 Aprile le consegne erano queste:
-il client invia una stringa, del tipo "2+4" (che decide il client stesso) al server
-Il server passa la richiesta a un thread, quindi al server multithread
-il server thread calcola il risultato e lo rimanda al client
-il client calcola se il numero è pari o dispari e rinvia questa "scoperta" al server multithread
-il server multihtread riceve il risultato!
E così dovevi scrivere 3 diversi file, ognuno che implementava rispettivamente il client, il server e il server multithread.
Le questioni un po'più "spinose" erano che il client doveva inviare la STRINGA con l'operazione e il server doveva, con il StringTokenizer, convertirla in numeri e calcolare la somma/differenza/prodotto/divisione. Poi magari era importante ricordarsi che per calcolare se un numero è pari o dispari usi la funzione "%" che calcola il resto...
..ma queste erano "bazzecole"..l'importante era far vedere che sapevi come usare un socket e come crearla, e come creare gli stream!
All'appello del 28 Gennaio non ricordo cosa avesse chiesto. Comunque era sempre un client che faceva una richiesta a un server multithread che poi faceva partire un thread!
__________________
I ragazzi che si amano si baciano in piedi contro le porte della notte, e la gente che passa li punta con il dito, ma i ragazzi che si amano non ci sono per nessuno ed è la loro ombra soltanto che trema nella notte.
Stimolando la rabbia dei passanti, la loro rabbia il loro disprezzo le risa la loro invidia.
I ragazzi che si amano non ci sono per nessuno.
Essi sono altrove, molto più lontano della notte, molto più in alto del giorno, nell'abbagliante splendore del loro amore.
scusa Flavia, ma il server multithread di cui parli equivale a dire multiutente?
Si, un server multithread che fa "partire" tanti thread diversi associati a vari processi!
Ovvero nella classe server avrai solamente una cosa del genere:
{
.....
Socket socket;
while(true) {
ServerThread t= new ServerThread(socket);
t.start();}
..}
e tutte le funzioni/operazioni le implementi nella classe
class ServerThread extends Thread
che implementerà un costruttore ServerThread e un metodo run che svolge proprio le fuznioni richieste (calcolare una somma ad esempio!).
Chiaro?Quindi il server "normale" si preoccupa solo di far partire un thread, non esegue nessun altra operazione o calcola, quindi "sbologna" tutto il lavoro al thread "t", che è un oggetto di tipo ServerThread.
Le sue azioni e il costruttore verranno indi implementate in una nuova classe, "ServerThread" che estende la classe Thread!
Se vuoi e se trovo tempo, ti scrivo il codice che ho fatto io all'esame!
__________________
I ragazzi che si amano si baciano in piedi contro le porte della notte, e la gente che passa li punta con il dito, ma i ragazzi che si amano non ci sono per nessuno ed è la loro ombra soltanto che trema nella notte.
Stimolando la rabbia dei passanti, la loro rabbia il loro disprezzo le risa la loro invidia.
I ragazzi che si amano non ci sono per nessuno.
Essi sono altrove, molto più lontano della notte, molto più in alto del giorno, nell'abbagliante splendore del loro amore.
Originally posted by Flavia
Se vuoi e se trovo tempo, ti scrivo il codice che ho fatto io all'esame!
se lo posti mi fai un favorone grazie!!
__________________
Originally posted by Flavia
Se vuoi e se trovo tempo, ti scrivo il codice che ho fatto io all'esame!
Per le domande su c chiede anche i vari tipi di errore?
Da quello che ho capito la programmazione c'è solo in java...ovvio che bisogna sapere anche quella in c, ma di codice vero e proprio da scrivere c'è solo java...confermate?
__________________
Originally posted by urcodiazfino a ora si, ha chiesto di scrivere codice solo in java.
Da quello che ho capito la programmazione c'è solo in java...ovvio che bisogna sapere anche quella in c, ma di codice vero e proprio da scrivere c'è solo java...confermate?
__________________
Ogni uomo mente, ma dategli una maschera e sarà sincero.
~ joker402 ~
-Secondo, terzo e quarto modulo: scrittura del CODICE che esegue una particolare richiesta. La richiesta è la stessa per tutti e quattro i turni dell'esame, solo che due di questi dovranno implementarla in UDP, due in TCP.
Ok, ma il server multithread utilizza il protocollo tcp, quindi chi ha avuto l'udp era solo per l'esercizio di completamento...giusto?
__________________
Originally posted by urcodiaz
-Secondo, terzo e quarto modulo: scrittura del CODICE che esegue una particolare richiesta. La richiesta è la stessa per tutti e quattro i turni dell'esame, solo che due di questi dovranno implementarla in UDP, due in TCP.
Ok, ma il server multithread utilizza il protocollo tcp, quindi chi ha avuto l'udp era solo per l'esercizio di completamento...giusto?
__________________
r
scusate, un'altra domanda cretina...ma i programmi devono essere compilati al momento completamente funzionanti oppure si tratta di un documento da completare tipo verifica?
__________________
Non so per la parte UDP.
i programmi non vanno compilati, li scrivi in blocco notes e basta!
__________________
I ragazzi che si amano si baciano in piedi contro le porte della notte, e la gente che passa li punta con il dito, ma i ragazzi che si amano non ci sono per nessuno ed è la loro ombra soltanto che trema nella notte.
Stimolando la rabbia dei passanti, la loro rabbia il loro disprezzo le risa la loro invidia.
I ragazzi che si amano non ci sono per nessuno.
Essi sono altrove, molto più lontano della notte, molto più in alto del giorno, nell'abbagliante splendore del loro amore.
Originally posted by Flavia
Se vuoi e se trovo tempo, ti scrivo il codice che ho fatto io all'esame!
[/B]
__________________
--I---DaniFilth---I--
ENDLESS SACRIFICE!!!
ciao ragazzi io ho provato a scrivere il codice per gli esercizi dell'esame provate a controllarli io ero al quarto turno ed avevo lo stesso esercizio della Flavia
qualcuno mi può mandare un pm con scritto come si fa ad alleare i file grazie !!!!!!!!!!!!!!
scusate l'indentazione ma non so come si fa a tenere l'ordine con il forum.
ciao
codice:
SERVER
import java.io.* ;
import java.net.* ;
public class Server {
static ServerSocket ss ;
public static void main ( String[] args ) {
try {
ss = new ServerSocket ( 12000 , 300 ) ;
while ( true ) {
Socket sock = ss.accept() ;
ServerThread t ;
t = new ServerThread ( sock ) ;
t.start() ; }
} catch ( Exception e ) {
e.printStackTrace() ;
}
}
}
CLIENT
import java.io.* ;
import java.net.* ;
public class Client {
static Socket service ;
static OutputStream out ;
static InputStream in ;
static InputStreamReader reader ;
static BufferedReader myInput ;
public static void main ( String[] args ) {
try {
service = new Socket ( "localhost" , 12000 ) ;
out = service.getOutputStream() ;
in = service.getInputStream() ;
System.out.println( "Inserisci l'operazione da effettuare, gli operandi devono essere separati da uno spazio" );
reader = new InputStreamReader ( System.in ) ;
myInput = new BufferedReader ( reader ) ;
String frase = myInput.readLine() ;
frase = frase + '\n' ;
for ( int i = 0 ; i < frase.length() ; i++ ) {
out.write ( ( int ) frase.charAt ( i ) ) ;
}
int c ;
String ris = "" ;
while ( ( c = in.read() ) != 10 ) {
ris = ris + ( char ) c ;
}
int risultato = Integer.parseInt ( ris ) ;
if ( risultato != -1 ) {
System.out.println ( "Il risultato e' " + risultato ) ;
if ( ( risultato % 2 ) == 0 ) {
out.write ( 0 ) ;
} else {
out.write ( 1 ) ;
}
} else {
System.out.println("Non e' possibile effettuare l'operazione");
}
service.close() ;
} catch ( Exception e ) {
e.printStackTrace() ;
}
}
}
SERVERHTREAD
import java.io.* ;
import java.net.* ;
import java.util.* ;
import java.lang.* ;
public class ServerThread extends Thread {
static Socket service ;
static OutputStream out ;
static InputStream in ;
StringTokenizer token ;
int risultato ;
public ServerThread ( Socket s ) {
service = s ;
}
public void run() {
try {
out = service.getOutputStream() ;
in = service.getInputStream() ;
String frase = "" ;
int c ;
while ( ( c = in.read() ) != 10 ) {
frase = frase + ( char ) c ;
}
token = new StringTokenizer ( frase , " " ) ;
int num1 = Integer.parseInt ( token.nextToken() ) ;
char op = token.nextToken().charAt ( 0 ) ;
int num2 = Integer.parseInt ( token.nextToken() ) ;
switch ( op ) {
case '+' :
risultato = num1 + num2 ;
break ;
case '-' :
if ( num1 > num2 ) {
risultato = num1 - num2 ;
} else {
risultato = -1 ;
}
break ;
case '*' :
risultato = num1 * num2 ;
break ;
case '/' :
if ( num1 > num2 ) {
risultato = num1 / num2 ;
} else {
risultato = -1 ;
}
break ;
}
String ris = Integer.toString ( risultato ) + '\n' ;
for ( int j = 0 ; j < ris.length() ; j++ ) {
out.write ( ris.charAt ( j ) ) ;
}
int risposta = in.read() ;
if ( risposta == 0 ) {
System.out.println ( "Il risultato e' pari" ) ;
} else {
System.out.println ( "Il risultato e' dispari" ) ;
}
service.close() ;
} catch ( Exception e ) {
e.printStackTrace() ;
}
}
}
Usa i tag {code} e {/code}, con le parentesi quadre
Qual'è il problema con il codice?
__________________
?
ho voluto solo postarlo se qualcuno lo controlla è meglio credo di averlo fatto giusto, magari può essere utile a qualcuno ciao
infatti io ti ringrazio!!!
tanx
Originally posted by mt661588
ho voluto solo postarlo se qualcuno lo controlla è meglio credo di averlo fatto giusto, magari può essere utile a qualcuno ciao
__________________
--I---DaniFilth---I--
ENDLESS SACRIFICE!!!
scusate ma se uno non ha mai programmato in java, come fa, una volta sistemata la struttura del client e del server, a scrivere il codice con le richieste effettive del client e le risposte del server?
Invento al momento?
E' fondamentale che sia giusto tutto o l'importante è solo che la struttura client server sia corretta?
__________________
Originally posted by mt661588
ho voluto solo postarlo se qualcuno lo controlla è meglio credo di averlo fatto giusto, magari può essere utile a qualcuno ciao
Originally posted by urcodiaz
scusate ma se uno non ha mai programmato in java, come fa, una volta sistemata la struttura del client e del server, a scrivere il codice con le richieste effettive del client e le risposte del server?
Invento al momento?
E' fondamentale che sia giusto tutto o l'importante è solo che la struttura client server sia corretta?
__________________
?
ciao a tutti,volevo farvi una semplice domanda, ma l'esame del 1 aprile, in particolare la teoria cosa sarà strutturata?
Crocette o croccette, domande aperte, V o F?
grazie mille.
se ne hai la possibilità potresti mettere qualke spiegazione del tuo codice per ki come me non è che ci capisca troppo?
TANX!!!!!
ciauu
Originally posted by mt661588
ho voluto solo postarlo se qualcuno lo controlla è meglio credo di averlo fatto giusto, magari può essere utile a qualcuno ciao
__________________
--I---DaniFilth---I--
ENDLESS SACRIFICE!!!
Originally posted by mt661588
ho voluto solo postarlo se qualcuno lo controlla è meglio credo di averlo fatto giusto, magari può essere utile a qualcuno ciao
__________________
Break Out
Originally posted by Flavia
Si, un server multithread che fa "partire" tanti thread diversi associati a vari processi!
Ovvero nella classe server avrai solamente una cosa del genere:
{
.....
Socket socket;
while(true) {
ServerThread t= new ServerThread(socket);
t.start();}
..}
e tutte le funzioni/operazioni le implementi nella classe
class ServerThread extends Thread
che implementerà un costruttore ServerThread e un metodo run che svolge proprio le fuznioni richieste (calcolare una somma ad esempio!).
Chiaro?Quindi il server "normale" si preoccupa solo di far partire un thread, non esegue nessun altra operazione o calcola, quindi "sbologna" tutto il lavoro al thread "t", che è un oggetto di tipo ServerThread.
Le sue azioni e il costruttore verranno indi implementate in una nuova classe, "ServerThread" che estende la classe Thread!
Se vuoi e se trovo tempo, ti scrivo il codice che ho fatto io all'esame!
__________________
Break Out
questo e il serverThread
import java.io.* ;
import java.net.* ;
import java.util.* ;
import java.lang.* ;
public class ServerThread extends Thread {
static Socket service ;
static OutputStream out ;
static InputStream in ;
StringTokenizer token ;
int risultato ;
// Costruttore del thread, ricevo la socket.
public ServerThread ( Socket s ) {
service = s ;
}
public void run() {
try {
// Inizializzo OutputStream.
out = service.getOutputStream() ;
// Inizializzo InputStream.
in = service.getInputStream() ;
/* Ricevo l'operazione dal client, la trasferisco
* all'interno di una stringa.
*/
String frase = "" ;
int c ;
while ( ( c = in.read() ) != 10 ) {
frase = frase + ( char ) c ;
}
// Creo uno StringTokenizer su frase per dividere gli operandi.
token = new StringTokenizer ( frase , " " ) ;
// Estraggo il primo numero.
int num1 = Integer.parseInt ( token.nextToken() ) ;
// Estraggo l'operatore.
char op = token.nextToken().charAt ( 0 ) ;
// Estraggo il secondo numero.
int num2 = Integer.parseInt ( token.nextToken() ) ;
// Casi dell'operatore.
switch ( op ) {
// Caso della somma.
case '+' :
risultato = num1 + num2 ;
break ;
/* Caso della differenza, se num1 < num2 allora
* non è possibile fare la differenza.
*/
case '-' :
if ( num1 > num2 ) {
risultato = num1 - num2 ;
} else {
risultato = -1 ;
}
break ;
// Caso della moltiplicazione.
case '*' :
risultato = num1 * num2 ;
break ;
/* Caso della divisione, se num1 < num2 allora
* non è possibile fare la divisione.
*/
case '/' :
if ( num1 > num2 ) {
risultato = num1 / num2 ;
} else {
risultato = -1 ;
}
break ;
}
// Creo una stringa con il risultato e un endline.
String ris = Integer.toString ( risultato ) + '\n' ;
// Passo il risultato al client.
for ( int j = 0 ; j < ris.length() ; j++ ) {
out.write ( ris.charAt ( j ) ) ;
}
// Ricevo una risposta dal client.
int risposta = in.read() ;
// Controllo se la risposta è pari o dispari.
if ( risposta == 0 ) {
System.out.println ( "Il risultato e' pari" ) ;
} else {
System.out.println ( "Il risultato e' dispari" ) ;
}
// Chiudo la connessione.
service.close() ;
} catch ( Exception e ) {
e.printStackTrace() ;
}
}
}
questo è il client
import java.io.* ;
import java.net.* ;
public class Client {
static Socket service ;
static OutputStream out ;
static InputStream in ;
static InputStreamReader reader ;
static BufferedReader myInput ;
public static void main ( String[] args ) {
try {
// Creo una Socket per comunicare con il server sulla stessa macchina.
service = new Socket ( "localhost" , 12000 ) ;
// Iniziallizzo OutputStream.
out = service.getOutputStream() ;
// Iniziallizzo InputStream.
in = service.getInputStream() ;
System.out.println( "Inserisci l'operazione da effettuare separando gli operatori da uno spazio" );
// Inizializzo le variabili per leggere da tastiera.
reader = new InputStreamReader ( System.in ) ;
myInput = new BufferedReader ( reader ) ;
// Leggo ciò che l'utente ha inserito.
String frase = myInput.readLine() ;
// Aggiungo '\n' per far terminare la stringa.
frase = frase + '\n' ;
// Passo al server l'operazione da effettuare.
for ( int i = 0 ; i < frase.length() ; i++ ) {
out.write ( ( int ) frase.charAt ( i ) ) ;
}
// Ricevo il risultato dal server.
int c ;
String ris = "" ;
while ( ( c = in.read() ) != 10 ) {
ris = ris + ( char ) c ;
}
// Trasformo la stringa passata in int.
int risultato = Integer.parseInt ( ris ) ;
/* Eseguo un controllo se il risultato è diverso da -1,
* allora stampo il risultato a video e passo al server
* il risultato dell'operazione per il controllo se è pari
* o dispari; altrimenti stampo che non è possibile effettuare
* l'operazione righiesta.
*/
if ( risultato != -1 ) {
System.out.println ( "Il risultato è " + risultato ) ;
if ( ( risultato % 2 ) == 0 ) {
out.write ( 0 ) ;
} else {
out.write ( 1 ) ;
}
} else {
System.out.println("Non è possibile effettuare l'operazione");
}
// Chiudo la connessione.
service.close() ;
} catch ( Exception e ) {
e.printStackTrace() ;
}
}
}
questo è il server
import java.io.* ;
import java.net.* ;
public class Server {
static ServerSocket ss ;
public static void main ( String[] args ) {
try {
// Creo una ServerSocket.
ss = new ServerSocket ( 12000 , 300 ) ;
while ( true ) {
// Accetto di effettuare un servizio per i client.
Socket sock = ss.accept() ;
ServerThread t ;
// Passo ai thread il compito di effettuare le operazioni richieste dal client .
t = new ServerThread ( sock ) ;
// Avvio il thread.
t.start() ;
}
} catch ( Exception e ) {
e.printStackTrace() ;
}
}
} ciao
non so rispondere alla tua domanda, cmq quello che ho fatto io è in tcp spero non vi crei problemi nella compilazione ciao
no..il programma funziona perfettamente..grazie...è questo dubbio tra ServerThread e ServerMultithread che mi da noia...
cmq grazie...inizio a capirci qualcosa...
__________________
Break Out
Ma sapete se in qualche turno degli esami passati ( gli ultimi 2 ) è stato richiesto di implementare un client ed un server Udp? Fino ad ora si è sempre parlato solo di tcp multithread, vero?
__________________
r
Ragazzi sono ancora alla prese con il capitolo 3 del libro in italiano, ero arrivato verso la fine vi chiedo chiaramente e prego a chi lo saa di rispondermi..
L'atm va fatti?
il 3.7 (compresi tutti quei sottoparagrafi incasinati)??
Thanks...
ps: risrivo la mia domanda di prima, è il compito (parte teorica) sarà solo a crocettE?
helpp
Originally posted by josh
Ragazzi sono ancora alla prese con il capitolo 3 del libro in italiano, ero arrivato verso la fine vi chiedo chiaramente e prego a chi lo saa di rispondermi..
L'atm va fatti?
il 3.7 (compresi tutti quei sottoparagrafi incasinati)??
Thanks...
ps: risrivo la mia domanda di prima, è il compito (parte teorica) sarà solo a crocettE?
helpp
__________________
"Solamente il cuore ti permette di vedere chiaramente.L'essenziale e' invisibile agli occhi"
bisogna vivere "alla giornata", senza crearsi troppe aspettative. quello che viene sarà un "di più" ed è da mettere nel salvadanaio.
Sono troppo una grilla petulante by Nous
Originally posted by francesco2
Ma sapete se in qualche turno degli esami passati ( gli ultimi 2 ) è stato richiesto di implementare un client ed un server Udp? Fino ad ora si è sempre parlato solo di tcp multithread, vero?
non lo sapevo... pensavo ci fosse da scrivere solo client e server tcp.
Anche perchè l'udp non è multithread.
__________________
r
scusa luna mentre il 3.7 e tutti i suoi sotto paragrafi...
grazie per la risposta precedente...
Originally posted by francesco2
non lo sapevo... pensavo ci fosse da scrivere solo client e server tcp.
Anche perchè l'udp non è multithread.
__________________
Break Out
non ci capisco + un tubo...
cmq... tutte le classi utilizzate c'erano nelle risorse?? non che mi siano particolarmente utili...
anch'io vorrei sapere differenza tra thread e multithread... e multithread in udp...
__________________
But until we unite
I live for that night
Wait for time
two souls entwine
Ti ringrazio Papousek, nessuno ha degli esempi veramenti banali da postare?
__________________
r
esempi??
sul sito del corso...cè un semplice clent e un semplice server fatti alle prime lezioni...
semplicemente..quando il client si connette al server....esso stapma a schermo "Hello networld" o una roba simile...
semplice..da cui si puo partire per ragionare..cmq il tutto è fatto sempre in TCP..e ripeto l UDP in questo corso è stato trattato in modo nn ragionato...tantè che all esame..è stato un crimine chiedere un multithread in udp....o un serverthread...io del codice..nn ho capito granchè...
cmq il sito è
http://reti.dico.unimi.it sezione materilae didattico penso (il file è firstlez.zip)
...nn so postare file
__________________
Break Out
sul sito del prof sono usciti gli assegnamenti... http://homes.dico.unimi.it/~gfp/ReC...ni-01-04-05.xls
Ven 01.04.05 - Ore 09:30 - Silab - Aula Sigma (Turno 1)
Ven 01.04.05 - Ore 11:30 - Silab - Aula Sigma (Turno 2)
Ven 01.04.05 - Ore 15:30 - Silab - Aula Sigma (Turno 3)
Ven 01.04.05 - Ore 17:30 - Silab - Aula Sigma (Turno 4)
__________________
But until we unite
I live for that night
Wait for time
two souls entwine
Ancora grazie, anche io ho più difficoltà con l'udp per ora mi auguro di non trovarmelo, ma spero di capirci qualcosa in più prima di venerdì!
__________________
r
che sia quella nuova creata ad HOC???
__________________
Break Out
sìssì l'aula sigma è quella! mi sono editato... prima non avevo letto silab-__-
__________________
But until we unite
I live for that night
Wait for time
two souls entwine
mmm..quello che mi chiedo ormai da molto..e a cui nn ne vengo a capo è questo...
allora...nell esame ormai è risaputo cio che chiede
1)domande su c
2)client (TCP/UDP a seconda del turno)
3)serverthread (TCP/UDP a seconda del turno)
4)server multithread (TCP/UDP a seconda del turno)
ecco...
mi chiede il client..ok va bene..compilo secondo le richieste...
mi chiede il server thread...ok..creo il server...con il thread...creo il server thread con il costruttore e il metodo run che svolge le richieste datemi dal prof...
ma al server multithread che devo fare???io di esempi nn ho visti...nel codice..che devo scrivere??
AIUTATEMI VE NE PREGO...
__________________
Break Out
Originally posted by josh
scusa luna mentre il 3.7 e tutti i suoi sotto paragrafi...
grazie per la risposta precedente...
guarda...io l atm....l ho studiato tutto...nn sapendo se andava fatto o meno...
per cui ti direi di leggerlo....
__________________
Break Out
Originally posted by papousek
mmm..quello che mi chiedo ormai da molto..e a cui nn ne vengo a capo è questo...
allora...nell esame ormai è risaputo cio che chiede
1)domande su c
2)client (TCP/UDP a seconda del turno)
3)serverthread (TCP/UDP a seconda del turno)
4)server multithread (TCP/UDP a seconda del turno)
ecco...
mi chiede il client..ok va bene..compilo secondo le richieste...
mi chiede il server thread...ok..creo il server...con il thread...creo il server thread con il costruttore e il metodo run che svolge le richieste datemi dal prof...
ma al server multithread che devo fare???io di esempi nn ho visti...nel codice..che devo scrivere??
AIUTATEMI VE NE PREGO...
__________________
r
Ne prendo un pò in giro:
Tutte domande sulle primitive, tipo:
- quali parametri della primitiva socket()devo usare per creare una socket UDP?
- cosa fa la primitiva listen(20)?
Dove si possono trovare le info riguardanti le domande di teoria?
__________________
r
Ma nelle diapositive di Cassiano UDP e JAVA....quando crea l'oggetto QuoteServerThread...da dove la tira fuori questo tipo di oggetto? non esiste nelle api java....grazie
qualcuno che me lo sa spiegare??
Originally posted by papousek
guarda...io l atm....l ho studiato tutto...nn sapendo se andava fatto o meno...
per cui ti direi di leggerlo....
Le slide di Cassiano per il C sono quelle: Imparare il C in 3 ore?
Se non sono quelle dove le trovo?
__________________
r
Originally posted by francesco2
Ne prendo un pò in giro:
Tutte domande sulle primitive, tipo:
- quali parametri della primitiva socket()devo usare per creare una socket UDP?
- cosa fa la primitiva listen(20)?
Dove si possono trovare le info riguardanti le domande di teoria?
__________________
I ragazzi che si amano si baciano in piedi contro le porte della notte, e la gente che passa li punta con il dito, ma i ragazzi che si amano non ci sono per nessuno ed è la loro ombra soltanto che trema nella notte.
Stimolando la rabbia dei passanti, la loro rabbia il loro disprezzo le risa la loro invidia.
I ragazzi che si amano non ci sono per nessuno.
Essi sono altrove, molto più lontano della notte, molto più in alto del giorno, nell'abbagliante splendore del loro amore.
Originally posted by boban
Ma nelle diapositive di Cassiano UDP e JAVA....quando crea l'oggetto QuoteServerThread...da dove la tira fuori questo tipo di oggetto? non esiste nelle api java....grazie
qualcuno che me lo sa spiegare??
__________________
I ragazzi che si amano si baciano in piedi contro le porte della notte, e la gente che passa li punta con il dito, ma i ragazzi che si amano non ci sono per nessuno ed è la loro ombra soltanto che trema nella notte.
Stimolando la rabbia dei passanti, la loro rabbia il loro disprezzo le risa la loro invidia.
I ragazzi che si amano non ci sono per nessuno.
Essi sono altrove, molto più lontano della notte, molto più in alto del giorno, nell'abbagliante splendore del loro amore.
Originally posted by papousek
guarda...io l atm....l ho studiato tutto...nn sapendo se andava fatto o meno...
per cui ti direi di leggerlo....
__________________
I ragazzi che si amano si baciano in piedi contro le porte della notte, e la gente che passa li punta con il dito, ma i ragazzi che si amano non ci sono per nessuno ed è la loro ombra soltanto che trema nella notte.
Stimolando la rabbia dei passanti, la loro rabbia il loro disprezzo le risa la loro invidia.
I ragazzi che si amano non ci sono per nessuno.
Essi sono altrove, molto più lontano della notte, molto più in alto del giorno, nell'abbagliante splendore del loro amore.
Grazie flavia sei gentilissima.
__________________
r
Originally posted by Flavia
Le slide di Cassiano dal sito reti.dico.unimi.it sono 3:
-UDP e JAVA
-Imparare il C in tre ore
-Socket programming in C with TCP
__________________
I ragazzi che si amano si baciano in piedi contro le porte della notte, e la gente che passa li punta con il dito, ma i ragazzi che si amano non ci sono per nessuno ed è la loro ombra soltanto che trema nella notte.
Stimolando la rabbia dei passanti, la loro rabbia il loro disprezzo le risa la loro invidia.
I ragazzi che si amano non ci sono per nessuno.
Essi sono altrove, molto più lontano della notte, molto più in alto del giorno, nell'abbagliante splendore del loro amore.
Originally posted by Flavia
Ovvero nella classe server avrai solamente una cosa del genere:
{
.....
Socket socket;
while(true) {
ServerThread t= new ServerThread(socket);
t.start();}
..}
e tutte le funzioni/operazioni le implementi nella classe
class ServerThread extends Thread
che implementerà un costruttore ServerThread e un metodo run che svolge proprio le fuznioni richieste (calcolare una somma ad esempio!).
Hai capito benissimo!
La classe server che fa partire il thread sono 4 righe di codice!
E nel serverthread sono due metodi: il costruttore e il run!
__________________
I ragazzi che si amano si baciano in piedi contro le porte della notte, e la gente che passa li punta con il dito, ma i ragazzi che si amano non ci sono per nessuno ed è la loro ombra soltanto che trema nella notte.
Stimolando la rabbia dei passanti, la loro rabbia il loro disprezzo le risa la loro invidia.
I ragazzi che si amano non ci sono per nessuno.
Essi sono altrove, molto più lontano della notte, molto più in alto del giorno, nell'abbagliante splendore del loro amore.
Cosa si intende per costruttore? Il programma con tutte le funzioni che deve svolgere?
Il run?
Grazie
Mi rendo conto di non essere molto preparato...
__________________
r
allora, prendendo come riferimento la richeista dell'appello del 1 marzo in TCP: scrivi un client che invii una stringa con una operazione al server; il server fa partire un thread che gestirà le funzioni; la classe serverthread calcolerà il risultato dell'operazione e lo restituirà al client; il client ritornerà al server se il risultato è pari o dispari.
Ecco come ho fatto io all'esame:
import java.io.*;
import java.net.*;
class client {
public static void main (String args[]) throws Exception {
String operazione=" 2 + 5";
// è importante mettere gli spazi tra i numeri e il segno di operazione perchè poi useremo la classe Stringtokenizer
int risultato; //il risultato che riceverà dal server
String pari-dispari=" ";
Socket s=new Socket ("localhost", 1234); //1234 è la porta
//creo le variabili rispettivamente per leggere dalla socket e scrivere dalla socket
BufferedReader inFromServer = new BufferedReader (new InputStreamReader(s.getInputStream()));
DataOutputStream outToServer = new DataOutputStream (s.getOutputStream());
//la invio al server
outToServer.writeBytes(operazione);
//ricevo il risultato dal server
risultato=inFromServer.read();
//L'operatore % calcola il resto della divisione
if ((risultato % 2)= 0)
pari-dispari= "Pari";
else
pari-dispari= "Dispari";
// Invio al server nuovamente
outToServer.writeBytes(pari-dispari);
//chiudo la connessione con la serversocket
s.close();
}
}
import java.io.*;
import java.net.*;
class server {
public static void main (String args[]) throws Exception
ServerSocket server=new ServerSocket(4567, 300);
/* creo la serversocket dove 4567 è la porta e 300 è il # max di connessioni che può accettare contemporaneamente*/
//inizio a creare l'oggetto serverthread
while (true) {
//servizio prende la connessione effettuata sul server
Socket servizio=server.accept();
System.out.println("connessione accettata\n");
//passo i parametri al thread e successivamente lo lancio
Serverthread t = new serverthread (servizio);
t.start();
System.out.println("Thread lanciato\n");
}
}
class serverthread extends Thread {
Socket s=null;
String daClient, versoClient;
//Costruttore: semplicmente dice che la coket su cui deve andare in ascolto è quella che gli è stata passata come parametro quando il costruttore è stato invocato nel server
public Serverthread (Socket servizio) {
//metto nella socket s del thread il valore della socket servizio passata dal server
this.s=servizio;
}
public void run() {
try {
System.out.println("Thread in esecuzione\n");
//creo le variabili per leggere e scrivere dalla socket s
BufferedReader inFromClient = new BufferedReader (new InputStreamReader(s.getInputStream()));
DataOutputStream outToClient = new DataOutputStream (s.getOutputStream());
//leggo la stringa inviata dal client
daClient=inFromClient.readLine();
//Uso la classe StringTokenizer per suddividere la stringa che mi è stata inviata in 3 "token", ovvero in tre pezzi: i due addendi e il segno di operazione
StringTokenizer tokenizedLine= new StringTokenizer(daClient);
int a;
int b;
String operatore;
double risultato;
a = getInt.tokenizedLine.nextToken(); //Il primo numero è il primo token
operatore = tokenizedLine.nextToken(); //Il segno di operazione è il secondo token, cioè il secondo pezzo
b = getInt.tokenizedLine.nextToken(); // il secondo numero è il terzo token, cioè il token ancora successivo
//Non ricordo assolutamente se il metodo per trasformare una stringa in intero fosse GetInt..in ogni caso, controllatevi il metodo giusto sul sito della Sun. N.B.:la classe StringTokenizer divide una stringa in tante sottostringhe, quindi i numeri presenti in una stringa vengono considerati STRINGHE, non numeri, chiaro?
switch(operatore) // Io non so che segno di operazione abbia usato il client
case("+"):
risultato=a + b;
case("-"):
risultato=a - b;
case("*"):
risultato=a * b;
case("/"):
risultato=a / b;
outToClient.write(risultato);
//Ricevo il risultato del pari-dispari
String pari-dispari;
inFromClient.readline(pari-dispari);
System.out.println ("Il risultato è un numero +" pari-dispari);
//chiudo la connessione col client
s.close();
}
}
__________________
I ragazzi che si amano si baciano in piedi contro le porte della notte, e la gente che passa li punta con il dito, ma i ragazzi che si amano non ci sono per nessuno ed è la loro ombra soltanto che trema nella notte.
Stimolando la rabbia dei passanti, la loro rabbia il loro disprezzo le risa la loro invidia.
I ragazzi che si amano non ci sono per nessuno.
Essi sono altrove, molto più lontano della notte, molto più in alto del giorno, nell'abbagliante splendore del loro amore.
Sei un tesoro!
__________________
r
io ancora nn capisco....quando ti chiede di sviluppare il server gli mandi il txt della classe Server....quando ti chiede di sviluppare il serverthread gli mandi il txt con la classe ServerThread extends Thread e balle varie...
..ma quando ti chiede di sviluppare il multithread che gli mandi??nn vedo classi Multithread...boh...
ciau
__________________
Break Out
Originally posted by Flavia
allora, prendendo come riferimento la richeista dell'appello del 1 marzo in TCP: scrivi un client che invii una stringa con una operazione al server; il server fa partire un thread che gestirà le funzioni; la classe serverthread calcolerà il risultato dell'operazione e lo restituirà al client; il client ritornerà al server se il risultato è pari o dispari.
Ecco come ho fatto io all'esame:
Macheranno di sicuro qualche parentesi e qualcosa sarà errato perchè ho fatto tutto di fretta..comunque il senso è quello!
All'esame è anche possibile consultare la documentazione online dei metodi di Java..quindi se avreste dubbi su come convertire una stringa in intero, su come usare la classe StringTokenizer, su come funziona il DataOutputStream..non preoccupatevi..avete la documentazione (almeno all'ultimo esame era così!!!)
__________________
Break Out
un macello????
Se togli i commenti o la cattiva indentazione sono poche righe di codice, peraltro semplicissimo!
Leggili un po'e fidati!
__________________
I ragazzi che si amano si baciano in piedi contro le porte della notte, e la gente che passa li punta con il dito, ma i ragazzi che si amano non ci sono per nessuno ed è la loro ombra soltanto che trema nella notte.
Stimolando la rabbia dei passanti, la loro rabbia il loro disprezzo le risa la loro invidia.
I ragazzi che si amano non ci sono per nessuno.
Essi sono altrove, molto più lontano della notte, molto più in alto del giorno, nell'abbagliante splendore del loro amore.
Originally posted by papousek
io ancora nn capisco....quando ti chiede di sviluppare il server gli mandi il txt della classe Server....quando ti chiede di sviluppare il serverthread gli mandi il txt con la classe ServerThread extends Thread e balle varie...
..ma quando ti chiede di sviluppare il multithread che gli mandi??nn vedo classi Multithread...boh...
ciau
__________________
I ragazzi che si amano si baciano in piedi contro le porte della notte, e la gente che passa li punta con il dito, ma i ragazzi che si amano non ci sono per nessuno ed è la loro ombra soltanto che trema nella notte.
Stimolando la rabbia dei passanti, la loro rabbia il loro disprezzo le risa la loro invidia.
I ragazzi che si amano non ci sono per nessuno.
Essi sono altrove, molto più lontano della notte, molto più in alto del giorno, nell'abbagliante splendore del loro amore.
grazie...
è che a me java nn mi entra in testa...da sempre....saro stupido...boh..ma riesco solamente a capirci poco....
1000 grazie...
__________________
Break Out
No problem!
In bocca al lupo a tutti!
__________________
I ragazzi che si amano si baciano in piedi contro le porte della notte, e la gente che passa li punta con il dito, ma i ragazzi che si amano non ci sono per nessuno ed è la loro ombra soltanto che trema nella notte.
Stimolando la rabbia dei passanti, la loro rabbia il loro disprezzo le risa la loro invidia.
I ragazzi che si amano non ci sono per nessuno.
Essi sono altrove, molto più lontano della notte, molto più in alto del giorno, nell'abbagliante splendore del loro amore.
Idem, sono un pò tardo pure io...
__________________
r
Io per studiare laboratorio di reti avrò ricopiato decine di volte i codici client e server TCP e UDP dal libro..per essere sicura di ricordarmi bene i nomi dei metodi, cosa usare e cosa no..
alla fine diventi "flessibile" anche ad usarli, senza impararli a memoria!
E il codice non è difficile, bisogna imparare cosa vogliono dire i metodi!
__________________
I ragazzi che si amano si baciano in piedi contro le porte della notte, e la gente che passa li punta con il dito, ma i ragazzi che si amano non ci sono per nessuno ed è la loro ombra soltanto che trema nella notte.
Stimolando la rabbia dei passanti, la loro rabbia il loro disprezzo le risa la loro invidia.
I ragazzi che si amano non ci sono per nessuno.
Essi sono altrove, molto più lontano della notte, molto più in alto del giorno, nell'abbagliante splendore del loro amore.
sono due ore che sto facendo dei codici....e nn mi funzionano...perchè??perchè??
******
codice rimosso
******
__________________
Break Out
sclerando un po...ho creato un semplicissimo client e un semplicissimo server....dove avviene una semplice connessione...se puo servire d aiuto a qualcuno....
CLIENT
import java.io.*;
import java.net.*;
class Clientprova {
public static void main (String args[]) throws Exception
{
Socket connection;
connection = new Socket("localhost", 6000);
System.out.println("Stabilita la connessione");
connection.close();
}
}
SERVER
import java.io.*;
import java.net.*;
class Serverprova {
public static void main (String args[]) throws Exception
{
ServerSocket Connessione;
Socket Conn;
Connessione = new ServerSocket(6000, 300);
Conn = Connessione.accept();
Connessione.close();
System.out.println("Stabilita la connessione");
Conn.close();
}
}
una domanda...se dopo ...(String args[]) metto il throws exception...dopo nn devo mettere la try/catch giusto???o sbaglio??
boban...questo dovrebbe andarti....tiè
__________________
Break Out
Puoi scegliere tu se metterla o no, ovvero se far gestire queste eccezioni o no!
__________________
I ragazzi che si amano si baciano in piedi contro le porte della notte, e la gente che passa li punta con il dito, ma i ragazzi che si amano non ci sono per nessuno ed è la loro ombra soltanto che trema nella notte.
Stimolando la rabbia dei passanti, la loro rabbia il loro disprezzo le risa la loro invidia.
I ragazzi che si amano non ci sono per nessuno.
Essi sono altrove, molto più lontano della notte, molto più in alto del giorno, nell'abbagliante splendore del loro amore.
ma se trovo da svolgere il server multithread in UDP, devo realizzarlo utilizzando la classe Multicast? Così creo un gruppo a cui invio gli stessi pacchetti...però mi sorge un dubbio...così facendo è come se gestissi più client alla volta? Non avevamo detto che il server multithread per UDP non esisteva??
Altra domanda per le risposte in c: il primo parametro di ogni system call è "int sd" che sarebbe il descrittore della socket...ma è un numero o è il nome della socket? listen(20) vuol dire che si scegle la socket 20 della lista per essere accettata oppure indica il numero di client nella coda e quindi il baclog?
grazie a tutti!
__________________
Sinceramente non ti saprei aiutare...
se stai provando a svolgere del codice in udp dopo hai voglia di postarlo?
__________________
r
domanda:
negli esempi che avete postato manca sempre:
TCPClient MyClient = new TCPClient();
MyClient.start();
subito dopo aver scritto il metodo main...
questo si deve mettere sempre o no? Nel server multithread sì...ma nel client e nel server thread?
Grasias!!
__________________
Originally posted by urcodiaz
ma se trovo da svolgere il server multithread in UDP, devo realizzarlo utilizzando la classe Multicast? Così creo un gruppo a cui invio gli stessi pacchetti...però mi sorge un dubbio...così facendo è come se gestissi più client alla volta? Non avevamo detto che il server multithread per UDP non esisteva??
Altra domanda per le risposte in c: il primo parametro di ogni system call è "int sd" che sarebbe il descrittore della socket...ma è un numero o è il nome della socket? listen(20) vuol dire che si scegle la socket 20 della lista per essere accettata oppure indica il numero di client nella coda e quindi il baclog?
grazie a tutti!
__________________
I ragazzi che si amano si baciano in piedi contro le porte della notte, e la gente che passa li punta con il dito, ma i ragazzi che si amano non ci sono per nessuno ed è la loro ombra soltanto che trema nella notte.
Stimolando la rabbia dei passanti, la loro rabbia il loro disprezzo le risa la loro invidia.
I ragazzi che si amano non ci sono per nessuno.
Essi sono altrove, molto più lontano della notte, molto più in alto del giorno, nell'abbagliante splendore del loro amore.
esiste qualcuno che ha avuto la parte in udp e ci dici come risolvere il server multithread in udp? grazie!
__________________
io devo dare l'esame domani, cmq ti posso dire per certo: lascia stare il multicast, non serve per fare un server multithread... sono due cose diverse.
__________________
those who test will find a bullet in they chest
put ta rest
by a brotha who was hopeless
grow up broke on tha rope of insanity
how many pistols smoking coming from a broken family
ok, capisco...ma se domani mi trovo un server multithread in udp cosa faccio?
Qualcuno mi dice chiaramente se esiste o meno?
Io son sicuro che per fare server multithread si usa tcp che è più sicuro e viene meglio. Sinceramente pensavo che il server multithread in udp non esistesse proprio...Chi ha fatto gli appelli precedenti potrebbe illuminarci?
Grasias!!
__________________
guarda, ti posto il codice (non completo, manca l'elaborazione dei dati del pacchetto, che dipende da cosa è richiesto che faccia il server) di un server multithread udp che ho fatto ieri. questo metodo funziona da quello che ho potuto vedere, ma non mi assumo responsabilità circa la correttezza effettiva in quanto me lo sono inventato di sana pianta... auguri!
code:
import java.util.*; import java.net.*; import java.io.*; class engine extends Thread { byte incoming[]; SocketAddress sender; public engine(byte[] b, SocketAddress s) { incoming = b; sender = s; } public void run() { //...fˆ qualcosa coi dati in incoming byte tbuf[] = new byte[256]; String response = //...scrive la risposta tbuf = response.getBytes(); try{ //invia la risposta DatagramSocket tsock = new DatagramSocket(); DatagramPacket tpack = new DatagramPacket(tbuf, tbuf.length, sender); tsock.send(tpack); System.out.println("pacchetto inviato"); tsock.close(); }catch(Exception e){} } } public class udp_calc_multiser { public static void main (String args[]) { byte buf[] = new byte[256]; DatagramPacket pack = new DatagramPacket(buf, buf.length); try{ DatagramSocket UDPsocklistener = new DatagramSocket(4444); while(true){ UDPsocklistener.receive(pack); new engine(pack.getData(), pack.getSocketAddress()).start(); } }catch(Exception e){} } }
__________________
those who test will find a bullet in they chest
put ta rest
by a brotha who was hopeless
grow up broke on tha rope of insanity
how many pistols smoking coming from a broken family
Grazieee UZI
__________________
r
io lo scorso appello ho avuto UDP...e l ultimo modulo..quello del multithread l ho lasciato bianco..appunto perchè...come ripeto...l udp dal mio punto di vista nn è stato propriamente visto a scuola....
cmq...sperem...
__________________
Break Out
la vedo grigia domani...
scusate la domanda ma le domande su C sono a risposta multipla anche quelle o sono aperte?
Originally posted by Vale
scusate la domanda ma le domande su C sono a risposta multipla anche quelle o sono aperte?
__________________
r
io per l'UDP ho fatto così che ne pensate?
import java.io.*;
import java.net.*;
public class ServerUDP{
private static DatagramSocket ss= null;
public static void main(String[] args){
try{
ss = new DatagramSocket(12000);
while (true){
byte[] recvData = new byte[1024];
DatagramPacket recvPacket = new DatagramPacket(recvData,recvData.length);
ss.receive(recvPacket);
ServerThreadUDP t= new ServerThreadUDP(ss,recvPacket);
t.start();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
import java.io.*;
import java.net.*;
public class ClientUDP{
private static DatagramSocket socket;
private static InputStreamReader reader;
private static BufferedReader myInput;
private static String LAFRASE= "La frase e':";
public static void main(String[] args){
try{
socket = new DatagramSocket();
InetAddress ipaddress=InetAddress.getByName("localhost");
System.out.println("inserisci la frase:");
reader = new InputStreamReader(System.in);
myInput = new BufferedReader(reader);
byte[] sendData = new byte[1024];
byte[] recvData = new byte[1024];
String frase= LAFRASE+myInput.readLine();
sendData=frase.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, ipaddress, 12000);
socket.send(sendPacket);
DatagramPacket recvPacket = new DatagramPacket(recvData, recvData.length);
socket.receive(recvPacket);
int c;
String recfrase="";
for (int i=0; (c=recvPacket.getData()[i])!=0; i++)
recfrase+= (char) c;
System.out.println("La frase in maiuscolo è :"+recfrase.substring(LAFRASE.length())+" di lunghezza: "+ (recfrase.length()-LAFRASE.length()));
String lung= "La lunghezza e'"+(recfrase.length()-LAFRASE.length())+"\n";
sendData= lung.getBytes();
sendPacket.setData(sendData);
sendPacket.setLength(sendData.length);
socket.send(sendPacket);
socket.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.DatagramSocket;
public class ServerThreadUDP extends Thread {
private static DatagramSocket socket;
private static byte[] recvData;
private static byte[] sendData;
private static DatagramPacket recvPacket;
public ServerThreadUDP(DatagramSocket s, DatagramPacket recvPacket){
socket = s;
this.recvPacket = recvPacket;
recvData= new byte[1024];
sendData= new byte[1024];
}
public void run(){
try{
int c;
String frase="";
for (int i=0 ; (c=recvPacket.getData()[i])!=0; i++)
frase += (char) c;
System.out.println(frase);
InetAddress ipaddress =recvPacket.getAddress();
int porta = recvPacket.getPort();
frase= frase.toUpperCase();
sendData = frase.getBytes();
DatagramPacket sendPacket= new DatagramPacket(sendData, sendData.length, ipaddress, porta);
socket.send(sendPacket);
}catch(Exception e){
e.printStackTrace();
}
}
}
grazie del codice....mi ci vorra un secolo per decriptarlo....
nota di redazione...nn c ho capito na randazza di mazza...
__________________
Break Out
é lo stesso esercizio che ha fatto Flavia però in Udp?
Grazie!
__________________
r
guarda, io ti spiego alcune mie considerazioni, prendile con le pinze perchè non fanno riferimento a materiale didattico (che non c'è, o quantomeno non i è stato fornito) ma sono frutto di miei ragionamenti.
nel codice che ho postato io, creo una datagramsocket che ha l'unico scopo di stare in ascolto e ricevere i pacchetti, poi al thread passo non il pacchetto ma i dati che contiene e l'indirizzo di provenienza. questo perchè ho paura che sennò faccia casino, in quanto quando passi il pacchetto non passi una sua copia ma proprio l'area di memoria che lo contiene... quindi alla fine tutti i thread si troverebbero a la vorare sullo stesso buffer e questo non è a mio avviso consigliabile.
cmq, non ho fatto test approfonditi.
__________________
those who test will find a bullet in they chest
put ta rest
by a brotha who was hopeless
grow up broke on tha rope of insanity
how many pistols smoking coming from a broken family
quindi devo usare la classe engine?
__________________
Originally posted by Vale
io per l'UDP ho fatto così che ne pensate?
__________________
?
e si effettivamente... :-)
esame 1° marzo (versione UDP)
ciao, posto il codice di client e server UDP relativi all'esame del 1° marzo in cui veniva richiesto di controllare una stringa contenente un'operazione e visualizzando il risultato ( misono per ora fermato a qst punto senza considerare la parità)..
non riesco a capire perchè qnd lo mando in esecuzione rimane bloccato sulla stringa inserita e il server si sconnette
cleintUDP.java
code:
import java.io.*; import java.net.*; public class clientUDP { public static void main(String args[]) throws Exception { String operazione,frase_server; DatagramSocket client; InetAddress indirizzo; DatagramPacket pacchetto_send, pacchetto_recv; byte[] buffer = new byte[1024]; client = new DatagramSocket(); System.out.println("Inserisci l'operazione (num1 op num2) dove op e' l'operatore:"); BufferedReader from_client = new BufferedReader(new InputStreamReader(System.in)); operazione = from_client.readLine(); buffer = operazione.getBytes(); indirizzo = InetAddress.getByName("localhost"); pacchetto_send = new DatagramPacket(buffer, buffer.length, indirizzo, 7000); client.send(pacchetto_send); pacchetto_recv = new DatagramPacket(buffer, buffer.length); client.receive(pacchetto_recv); frase_server = new String(pacchetto_recv.getData()); System.out.println("Il risultato dell'operazione e':" + frase_server); client.close(); } }
code:
public class serverUDP { public static void main(String args[]) throws Exception { ThreadUDP t; t = new ThreadUDP(); t.start(); } }
code:
import java.io.*; import java.net.*; import java.util.*; public class ThreadUDP extends Thread { DatagramSocket server; DatagramPacket pacchetto_send, pacchetto_recv; InetAddress indirizzo; byte[] dati_recv = new byte[1024]; byte[] dati_send = new byte[1024]; String operazione,op; StringTokenizer operazione_spezzata; int a,b,risultato,porta_client; public void run() { try { while(true) { server = new DatagramSocket(7000); pacchetto_recv = new DatagramPacket(dati_recv, dati_recv.length); server.receive(pacchetto_recv); operazione = new String(pacchetto_recv.getData()); operazione_spezzata = new StringTokenizer(operazione); a = Integer.parseInt(operazione_spezzata.nextToken()); op = operazione_spezzata.nextToken(); b = Integer.parseInt(operazione_spezzata.nextToken()); if (op.equals("+")) risultato = a + b; else if (op.equals("-")) risultato = a - b; else if (op.equals("/")) risultato = a / b; else risultato = a * b; dati_send = (Integer.toString(risultato)).getBytes(); indirizzo = pacchetto_recv.getAddress(); porta_client = pacchetto_recv.getPort(); pacchetto_send = new DatagramPacket(dati_send, dati_send.length, indirizzo, porta_client); server.send(pacchetto_send); server.close(); } } catch (Exception e) {} } }
__________________
msn: paolo198328@hotmail.com
mi spiace..io parlo un altra lingua...
__________________
Break Out
codice di merda! FKL!
__________________
FCERCASI BATTERISTA
guarda non cercare di capire perche non va, copia tutto come un robot rincoglionito e prega che sia abbastanza per passare questo maledetto esame inutile
__________________
FCERCASI BATTERISTA
Originally posted by Sir Punk
guarda non cercare di capire perche non va, copia tutto come un robot rincoglionito e prega che sia abbastanza per passare questo maledetto esame inutile
__________________
msn: paolo198328@hotmail.com
Originally posted by Sir Punk
guarda non cercare di capire perche non va, copia tutto come un robot rincoglionito e prega che sia abbastanza per passare questo maledetto esame inutile
siamo OT..torniamo allo splendido e affascinante mondo di JAVA
__________________
Break Out
Intervento del moderatore:
si,siete decisamente OT!Tornate in topic!
__________________
"Solamente il cuore ti permette di vedere chiaramente.L'essenziale e' invisibile agli occhi"
bisogna vivere "alla giornata", senza crearsi troppe aspettative. quello che viene sarà un "di più" ed è da mettere nel salvadanaio.
Sono troppo una grilla petulante by Nous
Re: esame 1° marzo (versione UDP)
Originally posted by ~paolo~
ciao, posto il codice di client e server UDP relativi all'esame del 1° marzo in cui veniva richiesto di controllare una stringa contenente un'operazione e visualizzando il risultato ( misono per ora fermato a qst punto senza considerare la parità)..
non riesco a capire perchè qnd lo mando in esecuzione rimane bloccato sulla stringa inserita e il server si sconnette
cleintUDP.java
code:
import java.io.*; import java.net.*; public class clientUDP { public static void main(String args[]) throws Exception { String operazione,frase_server; DatagramSocket client; InetAddress indirizzo; DatagramPacket pacchetto_send, pacchetto_recv; byte[] buffer = new byte[1024]; client = new DatagramSocket(); System.out.println("Inserisci l'operazione (num1 op num2) dove op e' l'operatore:"); BufferedReader from_client = new BufferedReader(new InputStreamReader(System.in)); operazione = from_client.readLine(); buffer = operazione.getBytes(); indirizzo = InetAddress.getByName("localhost"); pacchetto_send = new DatagramPacket(buffer, buffer.length, indirizzo, 7000); client.send(pacchetto_send); pacchetto_recv = new DatagramPacket(buffer, buffer.length); client.receive(pacchetto_recv); frase_server = new String(pacchetto_recv.getData()); System.out.println("Il risultato dell'operazione e':" + frase_server); client.close(); } }
code:
public class serverUDP { public static void main(String args[]) throws Exception { ThreadUDP t; t = new ThreadUDP(); t.start(); } }
code:
import java.io.*; import java.net.*; import java.util.*; public class ThreadUDP extends Thread { DatagramSocket server; DatagramPacket pacchetto_send, pacchetto_recv; InetAddress indirizzo; byte[] dati_recv = new byte[1024]; byte[] dati_send = new byte[1024]; String operazione,op; StringTokenizer operazione_spezzata; int a,b,risultato,porta_client; public void run() { try { while(true) { server = new DatagramSocket(7000); pacchetto_recv = new DatagramPacket(dati_recv, dati_recv.length); server.receive(pacchetto_recv); operazione = new String(pacchetto_recv.getData()); operazione_spezzata = new StringTokenizer(operazione); a = Integer.parseInt(operazione_spezzata.nextToken()); op = operazione_spezzata.nextToken(); b = Integer.parseInt(operazione_spezzata.nextToken()); if (op.equals("+")) risultato = a + b; else if (op.equals("-")) risultato = a - b; else if (op.equals("/")) risultato = a / b; else risultato = a * b; dati_send = (Integer.toString(risultato)).getBytes(); indirizzo = pacchetto_recv.getAddress(); porta_client = pacchetto_recv.getPort(); pacchetto_send = new DatagramPacket(dati_send, dati_send.length, indirizzo, porta_client); server.send(pacchetto_send); server.close(); } } catch (Exception e) {} } }
__________________
Break Out
Originally posted by urcodiaz
quindi devo usare la classe engine?
__________________
those who test will find a bullet in they chest
put ta rest
by a brotha who was hopeless
grow up broke on tha rope of insanity
how many pistols smoking coming from a broken family
Re: Re: esame 1° marzo (versione UDP)
Originally posted by papousek
cmq..penso che uno degli errori..sia di nn aver messo il costruttore con lo stesso nome della classe ThreadUDP...cioè manca proprio quello...un public ThreadUDP(){qualunque cosa}
ciaps
__________________
msn: paolo198328@hotmail.com
ehm..io nn sono bravo in java..pero ho notato che quando si crea un costruttore..prima di fare il run()...di solito quando si crea appunto..ad esso si da lo stesso nome della classe a cui appartiene il costruttore...(penso sia una delle regole di java)..e appunto manca questo particolare..poi puo darsi che sbaglio...
dovrebbe essere cosi...
import java.io.*;
import java.net.*;
import java.util.*;
public class ThreadUDP extends Thread {
DatagramSocket server;
DatagramPacket pacchetto_send, pacchetto_recv;
InetAddress indirizzo;
byte[] dati_recv = new byte[1024];
byte[] dati_send = new byte[1024];
String operazione,op;
StringTokenizer operazione_spezzata;
int a,b,risultato,porta_client;
PUBLIC ThreadUDP(QUALCHE PARAMETRO) {QUALCOSA... <-------
public void run() {
try
{
while(true)
{
server = new DatagramSocket(7000);
pacchetto_recv = new DatagramPacket(dati_recv, dati_recv.length);
server.receive(pacchetto_recv);
operazione = new String(pacchetto_recv.getData());
operazione_spezzata = new StringTokenizer(operazione);
a = Integer.parseInt(operazione_spezzata.nextToken());
op = operazione_spezzata.nextToken();
b = Integer.parseInt(operazione_spezzata.nextToken());
if (op.equals("+"))
risultato = a + b;
else
if (op.equals("-"))
risultato = a - b;
else
if (op.equals("/"))
risultato = a / b;
else
risultato = a * b;
dati_send = (Integer.toString(risultato)).getBytes();
indirizzo = pacchetto_recv.getAddress();
porta_client = pacchetto_recv.getPort();
pacchetto_send = new DatagramPacket(dati_send, dati_send.length, indirizzo, porta_client);
server.send(pacchetto_send);
server.close();
}
}
catch (Exception e) {}
}
}
spero che ora sia piu chiaro...
__________________
Break Out
ho fatto alcuni controlli (visualizzazione di variabili) e ho notato che la stampa della variabile int b non avviene... non so come mai
__________________
msn: paolo198328@hotmail.com
ragassuoli... ringrazio chi ha postato i codici e chi ha risposto ai nostri quesiti...
domani speriamo sia simile al primo appello, dove almeno c'erano parti di codice già scritte, e non come lo scorso appello dove bisognava scrivere tutto... andate in pace^^
__________________
But until we unite
I live for that night
Wait for time
two souls entwine
Originally posted by papousek
ehm..io nn sono bravo in java..pero ho notato che quando si crea un costruttore..prima di fare il run()...di solito quando si crea appunto..ad esso si da lo stesso nome della classe a cui appartiene il costruttore...(penso sia una delle regole di java)..e appunto manca questo particolare..poi puo darsi che sbaglio...
__________________
msn: paolo198328@hotmail.com
es...
ho messo i miei programmini.. magari a qlcn possono risultare utili
http://www.dsy.it/forum/showthread....0233#post280233
Ciao
__________________
msn: paolo198328@hotmail.com
papousek, ho capito finalmente qll che colevi dire... in effetti Cassiano aveva concesso il costruttore
public ServerThread(DatagramSocket s){
this.s=s;
}
ma ora non saprei come sfruttarlo.... in TCP avevo la socket grazie all'accept() del server e poi la passav come parametro del thread... ma in UDP???
bohhh
__________________
msn: paolo198328@hotmail.com
su questo..nn ti so aiutare...mi spiace...
__________________
Break Out
Originally posted by papousek
su questo..nn ti so aiutare...mi spiace...
__________________
msn: paolo198328@hotmail.com
Originally posted by Flavia
Le slide di Cassiano dal sito reti.dico.unimi.it sono 3:
-UDP e JAVA
-Imparare il C in tre ore
trovate
a voi come è andato l'esame?
__________________
"Solamente il cuore ti permette di vedere chiaramente.L'essenziale e' invisibile agli occhi"
bisogna vivere "alla giornata", senza crearsi troppe aspettative. quello che viene sarà un "di più" ed è da mettere nel salvadanaio.
Sono troppo una grilla petulante by Nous
io non ho parole... terzo turno...per alcune domande ( parlo dell'esame di teoria) non trovo ancora una risposta pur avendo slide libro ecc. davanti a me..
il fatto è che alcune sono messe giù in modo molto, molto bastardo...
__________________
those who test will find a bullet in they chest
put ta rest
by a brotha who was hopeless
grow up broke on tha rope of insanity
how many pistols smoking coming from a broken family
Originally posted by Angra
io non ho parole... terzo turno...per alcune domande ( parlo dell'esame di teoria) non trovo ancora una risposta pur avendo slide libro ecc. davanti a me..
__________________
"Solamente il cuore ti permette di vedere chiaramente.L'essenziale e' invisibile agli occhi"
bisogna vivere "alla giornata", senza crearsi troppe aspettative. quello che viene sarà un "di più" ed è da mettere nel salvadanaio.
Sono troppo una grilla petulante by Nous
quella sulla velocità di trasmissione del rame o per esempio differenza tra ftp e lftp o qualcosa del genere... boh
ma perche', quelle sui bridge trasparenti?c'erano ben 5 domande su questo argomento,e sinceramente ho beccato una sola slide in cui ne parlava...mi è sfuggito altro materiale?
ah era TFTP
__________________
"Solamente il cuore ti permette di vedere chiaramente.L'essenziale e' invisibile agli occhi"
bisogna vivere "alla giornata", senza crearsi troppe aspettative. quello che viene sarà un "di più" ed è da mettere nel salvadanaio.
Sono troppo una grilla petulante by Nous
io ho preso un 40% secco, media del turno 1 e 2 di 39,qualcosa%... dite che basta x un 18?
parlo della teoria, eh?
uhm..dipende molto da come valuta complessivamente il prof...la volta scorsa ho sentito dire che col 48% dava 18..magari stavolta sara' piu' buono!
__________________
"Solamente il cuore ti permette di vedere chiaramente.L'essenziale e' invisibile agli occhi"
bisogna vivere "alla giornata", senza crearsi troppe aspettative. quello che viene sarà un "di più" ed è da mettere nel salvadanaio.
Sono troppo una grilla petulante by Nous
ah ecco Tftp...
se qualcuno sa qualcosa o ha degli appunti presi a lezione con questi argomenti faccia un fischio...io non so più sbattere la testa... ed ora vedo se riesco a finire il progetto di info grafica
Originally posted by Angra
ah ecco Tftp...
se qualcuno sa qualcosa o ha degli appunti presi a lezione con questi argomenti faccia un fischio...io non so più sbattere la testa... ed ora vedo se riesco a finire il progetto di info grafica
Originally posted by filipp8
io ho preso un 40% secco, media del turno 1 e 2 di 39,qualcosa%... dite che basta x un 18?
parlo della teoria, eh?
__________________
msn: paolo198328@hotmail.com
A quanto pare le slide in italiano sono state base per domande anche in questo appello... eppure a me sembrava avesse detto non erano fontamentali...
Ad ogni modo, io dovevo dare solo il laboratorio, nella parte su C qualche domanda mi è sembrata un pò ambigua e mi ha lasciato perplesso. Per quanto riguarda Java, beh, ho fatto tutto ma non ho idea di come sia venuta
[edit] Ero al terzo turno. Vista l'ora a cui abbiamo cominciato e finito, non oso immaginare quando abbiano finito quelli del quarto
__________________
?
boh nelle domande in C ho fatto 50%, dai sono contento
__________________
msn: paolo198328@hotmail.com
Originally posted by ~paolo~
boh nelle domande in C ho fatto 50%, dai sono contento
Come funziona, per il laboratorio fa una media tra la parte di java e la parte di C? Io nella parte di C ho fatto schifo ma in compenso forse non è andata male la parte di Java, spero dia il giusto peso degli esercizi.
Chissa quanto bisogna aspettare per la correzione...
In bocca al lupo a tutti quanti e speriamo....
__________________
r
Originally posted by yeah
Ero al terzo turno. Vista l'ora a cui abbiamo cominciato e finito, non oso immaginare quando abbiano finito quelli del quarto [/B]
Originally posted by yeah
A quanto pare le slide in italiano sono state base per domande anche in questo appello... eppure a me sembrava avesse detto non erano fontamentali...
__________________
"Solamente il cuore ti permette di vedere chiaramente.L'essenziale e' invisibile agli occhi"
bisogna vivere "alla giornata", senza crearsi troppe aspettative. quello che viene sarà un "di più" ed è da mettere nel salvadanaio.
Sono troppo una grilla petulante by Nous
In laboratorio che tipo di esercizio avevate voi degli altri turni? (io ero al quarto e avevo l'es su Sanremo in UDP)
__________________
But until we unite
I live for that night
Wait for time
two souls entwine
al terzo turno e anche io avevo udp!
__________________
"Solamente il cuore ti permette di vedere chiaramente.L'essenziale e' invisibile agli occhi"
bisogna vivere "alla giornata", senza crearsi troppe aspettative. quello che viene sarà un "di più" ed è da mettere nel salvadanaio.
Sono troppo una grilla petulante by Nous
1° turno ed avevo una mini chat in TCP
__________________
msn: paolo198328@hotmail.com
Originally posted by luna
qualcuno sa dove posso trovare informazioni sul bridge trasparente?
__________________
?
si,sulle slide in italiano c'è qualcosa ma solo una slide e mezza sul bridge trasparente,niente di piu'...non credo sia sufficiente rispetto a quello che chiedeva il prof all'esame...faro' una bella ricerca con google
__________________
"Solamente il cuore ti permette di vedere chiaramente.L'essenziale e' invisibile agli occhi"
bisogna vivere "alla giornata", senza crearsi troppe aspettative. quello che viene sarà un "di più" ed è da mettere nel salvadanaio.
Sono troppo una grilla petulante by Nous
Originally posted by ~paolo~
io ero del 1° turno e ho fatto anch'io 40%
cmq ho puntato + sulla pratica... beh vedremo...
ti capisco bene anche io...ho studiato per un mese e mezzo il libro e vari appunti.Avevo anche guardato le slide in italiano ma credimi non è servito a nulla lo stesso..
Non è per fare polemica ma in ogni caso non passare cosi' un esame fa rimanere piuttosto male. La media del terzo gruppo era del 33% circa..e anche per il quarto era la stessa da quello che tu mi dici giusto?mah!fa molto riflettere...
E comunque..a questo punto mi viene da pensare che quelli del primo e del secondo turno abbiano avuto domande piu' "normali" rispetto a quelli del terzo e quarto. Se saro' smentita ne saro' ben felice
__________________
"Solamente il cuore ti permette di vedere chiaramente.L'essenziale e' invisibile agli occhi"
bisogna vivere "alla giornata", senza crearsi troppe aspettative. quello che viene sarà un "di più" ed è da mettere nel salvadanaio.
Sono troppo una grilla petulante by Nous
Il TFTP l'aveva chiesto all'esame di Gennaio, e ovviamente non sapevo cosa fosse perchè non l'avevo trovato da nessuna parte durante lo studio. Sono andata un po' a naso a partire dall'acronimo e pensando alla risposta più corretta..sbagliandola però credo .
Comunque mi pare che allora l'esame sia diventato più bastardo a sentire i vostri commenti..comunque anche negli appelli prima alcune cose non sapevo neppure io dove fosse andato a prenderle! O magari ero io che non avevo recuperato tutto iol materiale, boh!
__________________
I ragazzi che si amano si baciano in piedi contro le porte della notte, e la gente che passa li punta con il dito, ma i ragazzi che si amano non ci sono per nessuno ed è la loro ombra soltanto che trema nella notte.
Stimolando la rabbia dei passanti, la loro rabbia il loro disprezzo le risa la loro invidia.
I ragazzi che si amano non ci sono per nessuno.
Essi sono altrove, molto più lontano della notte, molto più in alto del giorno, nell'abbagliante splendore del loro amore.
Originally posted by luna
ti capisco bene anche io...ho studiato per un mese e mezzo il libro e vari appunti.Avevo anche guardato le slide in italiano ma credimi non è servito a nulla lo stesso..
Originally posted by luna
Non è per fare polemica ma in ogni caso non passare cosi' un esame fa rimanere piuttosto male. La media del terzo gruppo era del 33% circa..e anche per il quarto era la stessa da quello che tu mi dici giusto?mah!fa molto riflettere...
sinceramente...mi pongo anche io le tue stesse domande...
Io pensavo di scrivere al prof e chiedere dove potrei trovare il materiale adatto, visto che di solito è sempre disponibile Prini
Io l'unica cosa che non ho guardato bene sono le slide in inglese perche' tanto ho studiato sul libro.Un mio amico mi ha detto che il bridge trasparente ad esempio c'era nelle slide in inglese,ma sotto un altro nome,che veniva chiamato probabilmente solo "bridge"....
__________________
"Solamente il cuore ti permette di vedere chiaramente.L'essenziale e' invisibile agli occhi"
bisogna vivere "alla giornata", senza crearsi troppe aspettative. quello che viene sarà un "di più" ed è da mettere nel salvadanaio.
Sono troppo una grilla petulante by Nous
Originally posted by luna
sinceramente...mi pongo anche io le tue stesse domande...
Io pensavo di scrivere al prof e chiedere dove potrei trovare il materiale adatto, visto che di solito è sempre disponibile Prini
A me sembra che piu' che seguire il libro, le slide del kurose, o quelle in italiano, il prof segua quello che ha spiegato a lezione (ovvero quello che si è segnato sui sui "appunti").
Tralsciando la domanda sul cavo di rame, mi ricordo che di Ftp/Tftp (e di altre cose che magari nelle slide son solo accennate) a lezione aveva parlato.
Originally posted by luna
sinceramente...mi pongo anche io le tue stesse domande...
Io pensavo di scrivere al prof e chiedere dove potrei trovare il materiale adatto, visto che di solito è sempre disponibile Prini
Io l'unica cosa che non ho guardato bene sono le slide in inglese perche' tanto ho studiato sul libro.Un mio amico mi ha detto che il bridge trasparente ad esempio c'era nelle slide in inglese,ma sotto un altro nome,che veniva chiamato probabilmente solo "bridge"....
Originally posted by luna
ti capisco bene anche io...ho studiato per un mese e mezzo il libro e vari appunti.Avevo anche guardato le slide in italiano ma credimi non è servito a nulla lo stesso..
Non è per fare polemica ma in ogni caso non passare cosi' un esame fa rimanere piuttosto male. La media del terzo gruppo era del 33% circa..e anche per il quarto era la stessa da quello che tu mi dici giusto?mah!fa molto riflettere...
E comunque..a questo punto mi viene da pensare che quelli del primo e del secondo turno abbiano avuto domande piu' "normali" rispetto a quelli del terzo e quarto. Se saro' smentita ne saro' ben felice
ah ok almeno ho la conferma che la cosa è dunque stata equa purtroppo
__________________
"Solamente il cuore ti permette di vedere chiaramente.L'essenziale e' invisibile agli occhi"
bisogna vivere "alla giornata", senza crearsi troppe aspettative. quello che viene sarà un "di più" ed è da mettere nel salvadanaio.
Sono troppo una grilla petulante by Nous
Dite che sarebbe possibile chiedergli il testo delle domande per cercarle un pò sul libro.... anch'io ero al secondo turno... un disastro... :-(
ragazzi, un consiglio: è inutile disperarsi, e cmq gli argomenti chiesti che non sono espressamente trattati sul libro-slide sono sempre gli stessi ad ogni appello: tftp, bridge trasparenti e quant'altro.
basta raccogliere tutti questi argomenti e studiarseli attingendo da internet...
quindi:
tftp
bridge trasparenti
rtp (capitolo 6, che non va studiato tutto)
...
aggiungete voi il resto.
__________________
those who test will find a bullet in they chest
put ta rest
by a brotha who was hopeless
grow up broke on tha rope of insanity
how many pistols smoking coming from a broken family
All times are GMT. The time now is 03:08. | Show all 145 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.