lpr-b:note
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
lpr-b:note [10/10/2007 alle 08:52 (18 anni fa)] – Marco Danelutto | lpr-b:note [05/12/2007 alle 08:43 (18 anni fa)] (versione attuale) – Marco Danelutto | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
===== Note (LPRb 2007--2008) ===== | ===== Note (LPRb 2007--2008) ===== | ||
- | == Configurazione dell' | + | ==== Configurazione dell' |
Al centro di calcolo esistono tre versioni di Java: la 1.4, la 1.5 e la 1.6. | Al centro di calcolo esistono tre versioni di Java: la 1.4, la 1.5 e la 1.6. | ||
Per far sì che la versione utilizzata sia la 1.x, procedere come segue: | Per far sì che la versione utilizzata sia la 1.x, procedere come segue: | ||
Linea 15: | Linea 15: | ||
Infine, da eclipse, nelle preferenze del progetto, cambiate il runtime settandolo (dopo averlo cercato con l’apposito bottone) all’ambiente che avete scelto. | Infine, da eclipse, nelle preferenze del progetto, cambiate il runtime settandolo (dopo averlo cercato con l’apposito bottone) all’ambiente che avete scelto. | ||
- | == Thread == | + | ==== Thread |
Il capitolo sui Thread nella prima parte del libro di testo consigliato copre egregiamente l' | Il capitolo sui Thread nella prima parte del libro di testo consigliato copre egregiamente l' | ||
- | == Generics == | + | ==== Generics |
I generics (terminologia Java per indicare i template C++) sono ormai standard nelle versioni di Java successive alla 1.4. Li useremo abbondamentemente durante il corso. Potete trovare un buon tutorial sul sito della Sun a questo [[http:// | I generics (terminologia Java per indicare i template C++) sono ormai standard nelle versioni di Java successive alla 1.4. Li useremo abbondamentemente durante il corso. Potete trovare un buon tutorial sul sito della Sun a questo [[http:// | ||
- | == Socket TCP/IP == | + | ==== Socket TCP/ |
L' | L' | ||
- | == Programmino per testare ritorno carrello == | + | ==== Programmino per testare ritorno carrello |
Questo [[testRitornoCarrello|programma]] fa vedere come testare la lettura di un ritorno carrello su un *InputStreamReader*. | Questo [[testRitornoCarrello|programma]] fa vedere come testare la lettura di un ritorno carrello su un *InputStreamReader*. | ||
+ | |||
+ | |||
+ | ==== Tutorial su util.concurrent ==== | ||
+ | Questo è il [[http:// | ||
+ | |||
+ | |||
+ | |||
+ | ==== Nota sull' | ||
+ | Quando si utilizzano ObjectStream (in Input e in Output) è necessario che le aperture avvengano nell' | ||
+ | Se non fosse così, le chiamate **new ObjectInputStream(sock.getInputStream())** su client //e// server si bloccherebbero. | ||
+ | Quindi, la sequenza giusta di azioni fra client e server è una cosa tipo: | ||
+ | |||
+ | SERVER | ||
+ | ... ... | ||
+ | ServerSocket ss = ... | ||
+ | Socket s = ... | ||
+ | Socket s = ss.accept(); | ||
+ | ObjectInputStream ois = | ||
+ | new ObjectInputStream(s.getInputStream()); | ||
+ | new ObjectOutputStream(s.getOutputStream()); | ||
+ | // leggi la richiesta | ||
+ | Req r = (Req) ois.readObject(); | ||
+ | ObjectOutputStream oos = | ||
+ | new ObjectOutputStream(s.getOutputStream()); | ||
+ | ObjectInputStream ois = | ||
+ | new ObjectInputStream(s.getInputStream()); | ||
+ | ... ... | ||
+ | |||
+ | ==== Programmino ProtocolTester con URL ==== | ||
+ | Questo è il [[codiceProtocolTesterUrl|codice]] per il protocol tester presentato e discusso nella lezione del 26/10. | ||
+ | |||
+ | |||
+ | ==== Comando per controllare lo stato dei socket ==== | ||
+ | Se state utilizzando socket su una macchina (Linux) potete utilizzare il comando **netstat** per vedere in quale stato si trovino (stato del protocollo TCP, come visto a lezione di reti). | ||
+ | Il comando **netstat -p tcp** fa vedere tutti i dati relativi ai socket TCP sulla macchina. Per esempio: | ||
+ | |||
+ | [dhcp-ospiti3: | ||
+ | Active Internet connections | ||
+ | Proto Recv-Q Send-Q | ||
+ | tcp4 | ||
+ | tcp4 | ||
+ | tcp4 | ||
+ | tcp4 | ||
+ | tcp4 | ||
+ | tcp4 | ||
+ | tcp4 | ||
+ | tcp4 | ||
+ | tcp4 | ||
+ | tcp4 | ||
+ | [dhcp-ospiti3: | ||
+ | |||
+ | fa vedere le connessioni aperte sulla mia macchina, per esempio una connessione fra la port 60732 e la porta ssh (23) di pacifico. | ||
+ | |||
+ | Se per esempio state utilizzando un server che pubblica un socket sulla porta 54321, con il comando **nestat -p tcp | grep 54321** potete osservarne lo stato: | ||
+ | |||
+ | [dhcp-ospiti3: | ||
+ | tcp46 0 0 *.54321 | ||
+ | [dhcp-ospiti3: | ||
+ | |||
+ | Notare che il socket | ||
+ | Se lo stato fosse **CLOSE_WAIT** (come nella prima riga dell' | ||
+ | Per esempio, dopo aver lanciato un client che si connette alla 54321, e dopo che il client sia terminato, otterremo: | ||
+ | |||
+ | Proto Recv-Q Send-Q | ||
+ | tcp4 | ||
+ | tcp46 0 0 *.54321 | ||
+ | |||
+ | C' | ||
+ | Si veda la documentazione completa di nestat con **man netstat**. | ||
+ | |||
+ | |||
+ | |||
+ | ==== Classe ODP (Object Datagram Packet) ==== | ||
+ | |||
+ | Questo è il [[sorgenteODP|sorgente]] della classe ODP, discussa a lezione, che si può utilizzare per l' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== DatagramSocket che perde una percentuale di pacchetti ==== | ||
+ | Se volete testare programmi che utilizzano DatagramSocket per la spedizione di pacchetti UDP utilizzate [[lpr-b: | ||
+ | |||
+ | |||
+ | ==== Documentazione su RMI ==== | ||
+ | Esiste un {{http:// | ||
+ | Un altro mini tutorial decente si trova su {{http:// | ||
+ | Informazioni dettagliate sull' | ||
+ | |||
+ | |||
+ | ==== Security Managers con RMI ==== | ||
+ | Quando si voglia (o si debba) usare un SecurityManager per permettere caricamento dinamico di classi con RMI, si deve specificare un file con i permessi necessari alla polocy che si vuole implementare secondo il formato standard definito da Java ({{http:// | ||
+ | In questo caso, il programma deve essere lanciato definendo a riga di comando quale file di policy deve essere consultato. A tale scopo si usa la sintassi | ||
+ | |||
+ | java -Djava.security.policy=FileCheContieneLaPolicy nomeDellaClasseMain | ||
+ | |||
+ | Da notare che apparentemente una | ||
+ | |||
+ | grant { | ||
+ | | ||
+ | }; | ||
+ | |||
+ | non da' i permessi necessari alla lookup dell' | ||
+ | |||
+ | | ||
+ | |||
+ | dove il nome della macchina può essere sostituito dal wildcard " | ||
+ | |||
+ | ==== Esempio commentato sull' | ||
+ | Su {{http:// | ||
lpr-b/note.1192006371.txt.gz · Ultima modifica: 10/10/2007 alle 08:52 (18 anni fa) da Marco Danelutto