DarioMaggiarini Introduzionealla PROGRAMMAZIONE CLIENT- SERVER À V' I-L |-:'.r:-r-. .-'\|1-[N›¦'| \\ì'-sl'-3' Introduzione alla programmazione client-server Dario Maggiorini Introduzione alla programmazione client- server A VV _PEARSON Wesley © 2009 PearsonParaviaBrunoMondadori S.p.A. Le informazioni contenute in questo libro sono state verificate e doctunentate conlamassimacurapossibile.Nessunaresponsabilitàderivantedalloroutilizzo potràvenireimputata agliAutori, a Pearson Paravia Bruno Mondadori S.p.A. o aognipersona e societàcoinvoltanella creazione,produzione edistribuzione diquestolibro. Peripassi antologici,perlecitazioni,perleriproduzionigrafiche, cartografiche e fotografiche appartenenti allaproprietà di terzi, inseriti in quest°opera, l°editore è a disposizione degli aventi diritto non potuti reperire nonchè per eventualinonvoluteonlissionie/oerroridi attribuzioneneiriferimenti. I diritti di riproduzione e di memorizzazione elettronica totale e parziale con qualsiasi mezzo, compresi i microfilm ele copie fotostatiche, sono riservati per tuttiipaesi. LA FOTOCOPIATURA DEI LIBRI UN REATO Le fotocopie per uso personale del lettore possono essere effettuate nei limiti del 15°/o di ciascun voltune dietropagamento alla SIAE del compensoprevistodal1°art. 68, conlmi 4e5, dellalegge 22 aprile 1941 n. 633. Le riproduzioni effettuate per finalità di carattere professionale, econonlico o commerciale o comunque per uso diverso da quello personale possono essere effettuate a seguito di specifica autorizzazione rilasciata da AIDRO, corso di Porta Romana n. 108, 20122 Milano, e-mail [email protected] e sito Web l1ttp://WWW.aidro.org/. Copy-editing: FedericaSonzogno Graficadi copertina: NicolòCannizzaro Tuttiimarchicitatineltestosonodiproprietàdeilorodetentori. 978-88-7192-724-4 A tuttole donnechelavorano11elcampodel]'1'11fo1^111at1'ca, perche'non venganopiu\ co11sjderato (Caccettabilj1) soltantosepiùbravediq1.1a1u12que uomo Introduzione Con l°esponenziale crescita di Internet, utenti e aspiranti programmatori si trovano di fronte alla possibilità di interagire con un nun1ero sempre crescente di servizi e di accedere a quantità di informazioni senza precedenti. Oggi, scrivere progran1n1i che utilizzano Internet non vuole più dire produrre software costituito da due componenti che fanno uso della rete con1e n1ezzo di trasporto per i dati; significa, piuttosto, creare programmi in grado di collaborare tra loro e di dialogare con architetture distribuite governate da una serie di standard. Questo libro vuole essere un accompagnamento per chi desidera imparare i rudimenti della programmazione di rete secondo un nuovo approccio. Il filo conduttore non é piú costituito dal linguaggio e dalle operazioni usate per accedere alla trasmissione dati, bensí dai servizi e dalle modalità e strategie conle quali si intende usufruirne. Il presente libro é diviso in quattro parti. Nella prin1a, introduttiva, vengono gettate le basi per la strutturazione di protocolli e servizi. Nella seconda parte vengono esplorate modalità e strategie con cui è possibile realizzare alcuni elementi software che interagiscono tra loro in rete, per poter usufruire dei più importanti servizi disponibili su Internet. Le parti successive ripercorrono le stesse tappe della seconda proponendo due linguaggi diversi,Java e C, n1a discutendo il codice necessario per ottenere il risultato voluto. Inparticolare, la seconda parte e le successive si prestano a due modalità di lettura: potremmo definirle “verticale” e “orizzontale”. Nella modalità verticale i capitoli possono essere affrontati in n1ar1iera sequenziale, con1e in qualunque libro, permettendo al lettore di esaminare prin1a gli aspetti teorici e poi quelli pratici, elimir1ar1do al più un linguaggio di programmazione. Nella lettura orizzontale, invece, il lettore é invitato a leggere capitoli e paragrafi portando avanti parallelamente due o più sezioni; in tal modo, per ogni argomento affrontato verrà discussa sia la parte teorica che quella pratica e sarà possibile concentrarsi fin da subito sugli aspetti tecnici eliminando gli argomenti non di interesse senza sacrificare aspetti implementativi. All°interno del testo si troveranno una serie di elementi evidenziati che hanno la funzione di identificare informazioni che possono dare spunto a riflessioni e/o approfondimenti. E . . S€I`ClZ1O Viene proposto u11 esercizio attinente a1l°argon1ento appena trattato. Questa informazione mette i11 evidenza un concetto utile per no11 cadere i11 errore o vuole chiarire le idee al lettore su u11 argomento spesso frainteso. Questa i11formazio11e é u11 dettaglio aggiuntivo rispetto al testo. Propo11e u11 approfo11din1e11to o aiuta a contestualizzare l°argomento. Il codice portato ad esempio verrà evidenziato tramite riquadri tratteggiati, all°interno dei quali potrebbero comparire definizioni di funzioni o classi, -rx. H›-1. r†O. CI' pcft cn cf › oppure veri e propri frammenti di programmi da analizzare; in tal caso, perfacilitare la discussione, a sinistraverranno riportati anche i numeri di riga, che non far1r1o parte delprogran1n1a. O. ›-1. 3' III ›-.>1-W '›(-11^ flh11 ld ) -r_x.. I Protocolli e servizi Capitolo 1 Modello client-server Alla base di tutti i servizi fruibili tramite la rete troviamo un paradigma di accesso fondato su un n1eccanisn1odi rlomanrla 6 Iisposta. Una entità in rete pone una domanda (ad esempio, “che ora è ?”) a cui qualcuno si occuperà di dare una risposta (del tipo, “sono le 1() e 15”). Ottenere la risposta equivale a fruire del servizio richiesto. Tale approccio viene formalizzato tramite un°architettura che prende il non1e di arc11jtettura c1je11t-server. / /.33,/ 1 /"m`\ _?/"\†'\__/ l\_`__?__`_ã/"N, Rich,ier______Y 11 `\._/` .....-- ,..,«` srvla \ / Figura 1.1 Client e server.