• Non ci sono risultati.

Socket Multi-Thread

N/A
N/A
Protected

Academic year: 2021

Condividi "Socket Multi-Thread"

Copied!
7
0
0

Testo completo

(1)

Ingegneria del software

(2)

Cosa faremo oggi

Comunicazione tramite Socket Multi-Thread Logging

(3)

Comunicazione tramite Socket Multi-Thread

Nelle precedenti lezioni è stato illustrato l’utilizzo dei socket in un contesto sequenziale.

L’approccio precedente aveva la limitazione che ogni

“server” poteva gestire un solo “client” per volta

Per ovviare a questo problema solitamente il server

accetta la connessione, apre un thread a cui passa il socket del client e poi si rimetti in ascolto

(4)

Esempio Socket Multi-Thread - Server

Il server effettua l’accept e ad ogni nuova connessione crea un nuovo thread per la gestione del client socket

while(true){

clientSocket = serverSocket.accept();

task = new SimpleServerTask(clientSocket);

thread = new Thread(task);

thread.start();

}

(5)

Esempio Socket Multi-Thread – Server \ 2

E se volessimo terminare l’applicazione Uscendo dal ciclo while(true)

Segnalando la terminazione a tutti i thread attivi in

modo che possa essere effettuata una chiusura dolce?

Quali sono le modifiche da apportare?

(6)

Logging

Il logging è fondamentale per identificare possibili

problemi soprattutto quando il software è già stato rilasciato poiché potete tracciare ogni singola

operazione per identificare la causa di un problema

Esistono diversi livelli di logging che permettono di produrre una traccia delle operazioni con diversa granularità.

(7)

Esempio - Logging

public static void main(String[] args) { //Inizializzo la classe logger

Handler fileHandler = new FileHandler("mylog.log");

Logger.getLogger("logging.LoggingExample").addHandler(fileHandler);

Logger.getLogger("logging.LoggingExample").setLevel(Level.INFO);

//Recupero il logger

Logger logger = Logger.getLogger("logging.LoggingExample");

logger.finest("Messaggio livello finest");

logger.finer("Messaggio livello finer");

logger.fine("Messaggio livello fine");

logger.severe("Messaggio livello severe");

logger.config("Messaggio livello config");

logger.info("Messaggio livello info");

Riferimenti

Documenti correlati

• quando riceve una richiesta di connessione dal client, crea una nuova struttura che implementa il nuovo socket creato. In

  produce un valore uguale a 0 se la stringa non è un indirizzo IP nel formato corretto (>0 se la conversione avviene con successo).  

 l’astrazione di comunicazione interprocesso fornita dai socket consiste nella possibilità di inviare un messaggio tramite un socket di un processo e ricevere il messaggio tramite

Il tipo di comunicazione specifica come deve avvenire la comunicazione, ovvero se si debbano usare i datagram o se si vuole una connessione di qualità, o ancora se si

• Il metodo run della classe di libreria Thread definisce l’insieme di statement Java che ogni thread (oggetto della classe) eseguirà.. concorrentemente con gli

Esempio indirizzi : Vediamo alcuni esempi di

Nel caso del client l'altra parte del  socket pair e' assegnata automaticamente dal kernel, i valori

▪ Assegnare memoria e risorse per la creazione di nuovi processi è oneroso; poiché i thread condividono le risorse del processo cui appartengono, è molto più con- veniente creare