Benvenuto!
Accedi
o
registrati
.
14-12-2019, 15:16:12
Home
CDL Informatica
UniCT
CEA
Prof
Help
Search
Calendar
Login
Register
Forum Informatica Unict
»
LAUREA TRIENNALE (D.M. 270/04)
»
III anno
»
Tecniche di Programmazione Concorrente e Distribuita, 9 CFU
(Moderator:
Giuseppe Pappalardo
) »
Testo compito 21/12/2012
Pages: [
1
]
Go Down
« precedente
successivo »
Print
Author
Topic: Testo compito 21/12/2012 (Read 804 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Giuseppe Pappalardo
Moderator
Apprendista Forumista
Offline
Posts: 398
Testo compito 21/12/2012
«
on:
21-12-2012, 12:44:11 »
http://www.dmi.unict.it/~giunta/TPCD.html
Logged
Shin
Forumista
Offline
Gender:
Posts: 822
Io sono ciò che sono per ciò che siamo tutti
Soluzione compito 21/12/2012
«
Reply #1 on:
27-12-2012, 16:57:15 »
Mia soluzione, comprendente la parte facoltativa:
Server
Code:
import java.net.*;
import java.io.*;
public class server
{
public static Integer sommaTotale;
public static void main(String args[])
{
try
{
ServerSocket server = new ServerSocket(33333);
sommaTotale = 0;
System.out.println("Server in attesa di connessioni (CTRL-C per terminare)");
// ciclo infinito, in attesa di connessioni
while(true)
{
// chiamata bloccante, in attesa di una nuova connessione
Socket client = server.accept();
// la nuova richiesta viene gestita da un thread indipendente, si ripete il ciclo
connect nuovaConnessione = new connect(client);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
// definisce il thread che andrà a gestire separatamente le singole connessioni
class connect extends Thread
{
// dichiarazione delle variabili socket e dei buffer
Socket client;
BufferedReader in;
PrintWriter out;
public connect(Socket client)
{
this.client = client;
// invoca automaticamente il metodo run()
this.start();
}
public void run()
{
try
{
String tmp;
int i = 0, somma = 0;
// inizializzo i buffer in entrata e uscita
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(client.getOutputStream())), true);
// leggo la stringa in input
tmp = in.readLine();
// scorro fino a trovare il primo carattere cifra
while(!isInt(tmp.charAt(i)+""))
i++;
// sommo tutte le cifre
while(i < tmp.length())
{
somma += Integer.parseInt(tmp.charAt(i)+"");
i++;
}
// garantisco che un solo thread alla volta abbia accesso alla variabile sommaTotale
synchronized(server.sommaTotale)
{
server.sommaTotale += somma;
}
out.println("Somma: "+somma+"; Somma totale: "+server.sommaTotale);
// chiusura dei buffer e del socket
in.close();
out.close();
client.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public boolean isInt(String str)
{
try
{
Integer.parseInt(str);
return true;
}
catch (NumberFormatException nfe) {}
return false;
}
}
Client
Code:
import java.net.*;
import java.io.*;
public class client
{
public static void main(String[] args)
{
/* inizio verifica della correttezza dei parametri */
String utilizzo = ">> Utilizzo: java client XX...XNN...N\nDove:\n - XX...X è una sequenza di caratteri non cifra\n - NN...N è una sequenza di cifre (da 0 a 9)";
int i;
// controllo se il numero di parametri è 1 e se il primo carattere non è una cifra
if (args.length != 1 || isInt(args[0].substring(0,1)))
{
System.out.println(utilizzo);
return;
}
// scorro tutti i caratteri non cifre
i = 1;
while(i < args[0].length() && !isInt(args[0].substring(i,i+1)))
i++;
// controllo se sono già arrivato alla fine della stringa senza trovare numeri
if (i == args[0].length())
{
System.out.println(utilizzo);
return;
}
// controllo se tutti i caratteri dalla prima cifra fino alla fine della stringa sono a loro volta cifre
while(i < args[0].length())
{
if (!isInt(args[0].substring(i,i+1)))
{
System.out.println(utilizzo);
return;
}
i++;
}
/* fine verifica della correttezza dei parametri*/
try
{
// creo il socket
InetAddress indirizzo = InetAddress.getByName("localhost");
Socket client = new Socket(indirizzo, 33333);
// creo i buffer
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(client.getOutputStream())), true);
// invio stringa
out.println(args[0]);
// ricevo e stampo la risposta
System.out.println(in.readLine());
// chiusura dei buffer e del socket
in.close();
out.close();
client.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static boolean isInt(String str)
{
try
{
Integer.parseInt(str);
return true;
}
catch (NumberFormatException nfe) {}
return false;
}
}
Come sempre, se avete domande o consigli riguardo la mia soluzione siete i benvenuti.
Logged
"Il peggiore analfabeta è l’analfabeta politico. Egli non sente, non parla, nè s’importa degli avvenimenti politici. Egli non sa che il costo della vita, il prezzo dei fagioli, del pesce, della farina, dell’affitto, delle scarpe e delle medicine dipendono dalle decisioni politiche.
L’analfabeta politico è così somaro che si vanta e si gonfia il petto dicendo che odia la politica.
Non sa, l’imbecille, che dalla sua ignoranza politica nasce la prostituta, il bambino abbandonato, l’assaltante, il peggiore di tutti i banditi,
che è il politico imbroglione, il mafioso corrotto, il lacchè delle imprese nazionali e multinazionali."
(
Bertolt Brecht
)
Collettivo SDAI
:
collettivosdai.altervista.org
,
facebook
.
Movimento Studentesco Catanese
:
www.movimentostudentesco.org
https://github.com/ShinDarth
http://shinworld.altervista.org
http://www.openprogrammers.it
LinuxMint
user.
Pages: [
1
]
Go Up
Print
« precedente
successivo »
Jump to:
Please select a destination:
-----------------------------
Area Ufficiale
-----------------------------
=> Annunci Ufficiali
=> Segreteria Didattica
=> Aiuto, proposte e commenti
=> Stages e progetti finali
=> C.O.F. Centro Orientamento e Formazione
=> Messaggi (d)agli amministratori del forum
-----------------------------
LAUREA TRIENNALE (D.M. 270/04)
-----------------------------
=> I anno
===> Architettura degli Elaboratori, 9 CFU
===> Elementi di Analisi Matematica, 12 CFU
===> Fondamenti di Informatica, 9 CFU
===> Matematica Discreta, 12 CFU
===> Programmazione 1, 9 CFU
===> Programmazione 2, 9 CFU
=> II anno
===> Algoritmi, 9 CFU
===> Basi di Dati, 9 CFU
===> Fisica, 9 CFU
===> Ingegneria del Software, 9 CFU
===> Inglese, 3 e 6 CFU
===> Interazione e Multimedia, 9 CFU
===> Sistemi Operativi, 9 CFU
=> III anno
===> Calcolo Numerico, 6 CFU
===> Formazione Numerica, 6 CFU
===> Introduzione all'Analisi dei Dati, 9 CFU
===> Metodi Matematici e Statistici, 6 CFU
===> Reti di Calcolatori, 9 CFU
===> Tecniche di Programmazione Concorrente e Distribuita, 9 CFU
===> Teoria dell'Informazione e Crittografia, 9 CFU
=> III anno - Materie a scelta (crediti liberi)
===> Computer Forensics, 6 CFU
===> Computer Graphics, 9 CFU
===> Digital Game Development, 6 CFU
===> GPGPU/CUDA, 6 CFU
===> Informatica Musicale, 6 CFU
===> LAP 1: programmazione C/C++ 6 CFU
===> LAP 2: Programmazione Android, 6 CFU
===> Sistemi Centrali, 6 CFU
===> Startup d'impresa e Modelli di Business, 6 CFU
===> Internet Security 9 CFU
===> Social Media Management, 6 CFU
=> Corsi disattivati - Vecchio curriculum
===> E-Commerce, 6 CFU
===> Legislazione Informatica, 6 CFU
===> Teoria della Computabilità, 9 CFU
-----------------------------
LAUREA MAGISTRALE
-----------------------------
=> I ANNO
===> Intelligenza Artificiale e Lab, 9 CFU
===> Algoritmi e Complessità, 9 CFU
===> Computer Vision, 9 CFU
===> Crittografia, 9 CFU
===> Fondamenti e Linguaggi per la Programmazione Distribuita
===> Inglese Scientifico, 3 CFU
===> Metodi analitici per l'informatica, 6 CFU
===> Metodi Matematici per l'Ottimizzazione (Corso Integrato), 12 CFU
===> Multimedia, 9 CFU
===> Sicurezza dei Sistemi Informatici 9 CFU
===> Computer Security, 9 CFU
=> II ANNO
===> Machine Learning 6 CFU
===> Teoria della Computabilità, 9 CFU
===> Analisi e Gestione dei Dati, 9 CFU
===> Compilatori, 9 CFU
===> Computazione Naturale e BioIspirata, 6 CFU
===> Introduzione alla Bioinformatica, 9 CFU
===> Linguaggi Formali e Applicazioni, 9 CFU
===> Logica Computazionale, 9 CFU
===> P2P & Wireless Networks, 9 CFU
===> Pattern Recognition, 9 CFU
===> Sistemi Distribuiti, 9 CFU
===> Sistemi dedicati e laboratorio, 9 CFU
===> Web Reasoning
=> Corsi disattivati - Vecchio curriculum
===> Fisica moderna per l'informatica, 6 CFU
===> Linguaggi di Programmazione, 9 CFU
===> Protocolli di Rete
===> Teoria dei Codici, 6 CFU
-----------------------------
Vecchi ordinamenti ad esaurimento
-----------------------------
=> Laurea Triennale (D.M. 509/00)
===> Algoritmi 1
===> Algoritmi 2
===> Basi Teoriche dell'Informatica
===> Economia Aziendale
===> Fisica 1, 6 CFU
===> Fisica 2, 6 CFU
===> Fisica 3
===> Formazione Analitica 1
===> Formazione Analitica 2
===> Formazione Discreta 1
===> Formazione Discreta 2
===> J2ME
===> Lab. Amministrazione di Sistemi
===> Laboratorio di Interazione
===> Modelli Matematici
===> Multimedia per Dispositivi Mobile
===> Progetto Software
===> Reti 1, 6 CFU
===> Sicurezza dei Sistemi Informatici 1
===> Sistemi Distribuiti 1
===> Teoria dei Grafi
===> Usabilità ed Estetica del Web
===> Web Programming
=> Laurea Specialistica (D.M. 509/00)
===> Algoritmi 3
===> Analisi Numerica
===> Complessità
===> Computabilità
===> Data analysis e management
===> Ingegneria del software 2
===> Linguaggi Formali
===> Metodi algoritmici per l'ottimizzazione combinatoria
===> Programmazione Funzionale
===> Reti di Calcolatori 2
===> Ricerca Operativa
===> Sistemi Distribuiti 2
-----------------------------
Dottorandi
-----------------------------
=> Wall
=> Events
-----------------------------
Area Studenti
-----------------------------
=> Agorà
=> L'angolo del tecnico
=> Il Mercatino degli studenti
=> Software
===> -vecchia catalogazione [sarà rimossa a breve]-
=====> Proprietario
=====> Free Software
=====> Open Source
===> Approfondimenti
===> News
===> Studio
===> Videogiochi
===> Networking e telecomunicazioni
===> Sviluppo
===> Ufficio e produttività
===> Sistemi Operativi
=====> Microsoft Windows
=====> GNU/Linux, Unix e BSD
=====> Mac OS X
=====> Windows Phone
=====> Android
=====> iOS
=====> Altri
===> Eventi, conferenze, concorsi
=> Microsoft Student Partner - Avvisi e informazioni
=> ERASMUS/borse di studio internazionali
Caricamento in corso...