In Supremæ Dignitatis Università degli Studi di Pisa Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea Specialistica in Tecnologie Informatiche Rasip, MIDlet per scambio di messaggi SIP Realizzazione di un software di scambio di messaggi per dispositivi mobili, utilizzando come protocollo SIP e come framework di sviluppo J2ME Studenti: Umberto Lentini umberto.lentini@gmail.com Paolo Valleri paolo.valleri@gmail.com Reti Mobili Cellulari: Applicazioni e servizi - 2008/2009
1 OBIETTIVI 1 Obiettivi Con il presente progetto si intende realizzare un applicazione per dispositivi mobili che permetta loro di scambiare messaggi utilizzando il protocollo SIP 1. Gli obiettivi del lavoro sono raggrupati in due macro categorie: Grafica: realizzazione di una applicazione in ambiente j2me per un dispositivo di ridotte dimensioni e capacità di calcolo. Rete: studio del protocollo e sue API in ambiente j2me al fine di spedire e riceve messaggi utilizzando come protocollo di comunicazione a basso livello il SIP. Il primo obiettivo prevede che l applicazione sia realizzata utilizzando i controlli grafici della libreria e che sia per quanto possibile usabile; ovvero sia possibile all utente mediante solo i pulsanti messi a disposizione dal dispositivo mobile navigare all interno dell applicazione nella maniera più semplice e intuitiva possibile. Questo comporta anche la realizzazione, quando necessario, di specifici controlli grafici a partire da quelli base. Il secondo obiettivo prevede invece un implementazione più o meno completa della parte messaggistica del protocollo SIP. Le comunicazioni si dividono nelle classiche client-server client-client; le prime avvengono fra il dispositivo mobile e un server centralizzato che offre un servizio di registrazione e autenticazione, le seconde invece sono comunicazioni punto-punto fra due dispositivi mobili. Questa comunicazione prevede che l applicazione sia predisposta sia all invio che alla ricezione di messaggi; ovvero ogni dispositivo funge da client per l invio e da server per la ricezione. Ulteriore obiettivo posto è una progettazione dell applicazione che permetta di utilizzare il sofware per più protocolli contemporanemanete. 1 Session Initiated Protocol, 3
2 RASIP 2 Rasip L applicazione è stata strutturata in 3 livelli indipendenti; quello più alto è rappresentato dall interfaccia grafica(gui), quello più basso del protocollo (Sip) e quello intermedio dal mediatore(mediator), punto nevralgico del progetto, che funge da intermediario fra i due livelli. E previsto che l applicazione supporti sessioni multiple di chat, questo coinvolge l intefaccia grafica, che deve permettere una semplice ma efficace gestione delle diverse finestre di chat, e il protocollo che deve amministrare più sessioni parallelamente. Figura 1: Rasip, schema generale GUI L interfaccia grafica fa uso di buona parte dei controlli grafici della libreria e laddove l applicazione ha richiesto controlli più complessi si è fatto ricorso a controlli implementati ad-hoc. La gestione delle chat multiple ha portato alla scelta di un sistema di visualizzazione a tab; poichè il framework non possiede nessun controllo adatto a realizzare un sistema del genere si è reso necessario lo sviluppo di un controllo grafico specifico chiamato Tab- Menu 2. Questo controllo non è stato realizzato ex-novo ma si è esteso un 2 vedi file: rasip/src/it/unipi/di/rasip/gui/tabs/tabmenu.java 4
2 RASIP controllo base (CustomItem), sebbene molto generico, già presente nel framework in modo da rendere il nostro oggetto riutilizzabile anche al di fuori del progetto nativo. SIP Per quanto riguarda il livello di rete sono state realizzate due entità: SipClient e SipServer, con lo scopo di astrarre al resto dell applicazione le peculiarità del protocollo. Nello specifico le API della libreria permettono di gestire in modo abbastanza semplice le comunicazioni; infatti sono presenti vari metodi per astrarre al programmatore la costruzione vera e propria del messaggio SIP. Avendo l applicazione come requisito la comunicazione punto-punto è necessario che, una volta caricata, sia avviato anche il server. Quest ultimo sarà in ascolto per tutta la durata del processo e presente in un unica istanza e provvedderà ad accettare e smistare tutte le connessioni in entrata anche di sessioni di chat differenti. Sarà poi compito del mediatore recapitare i messaggi alla finestra di Tab corrispondente. Per ogni sessioni di chat è invece presente un istanza diversa di Client che riceverà dal mediatore il messaggio da recapitare al destinatario remoto. MEDIATOR Componente fondamentale del progetto, ha il compito di interfacciare il livello di rete con il livello dell interfaccia grafica. Svolge due compiti: inoltra i messaggi in uscita dall interfaccia grafica (una specifica finestra dei Tab) allo specifico client nel livello di rete, e inoltra i messaggi ricevuti dal server alla corretta finestra di chat. Per mantere correttamente le relazioni sessione-finestrachat sono utilizzate due hashtable: nella prima sono memorizzati i clienti, mentre nella seconda sono memorizzate le finestre di chat. Esempio: non appena il server riceve un messaggio dalla rete, lo inoltra al mediatore; questo cerca nella tabella il tab relativo alla sessione di chat; se presente inoltra il messaggio altrimenti istanzia una nuova tab prima di inoltrarlo. 5
RIFERIMENTI BIBLIOGRAFICI 3 Installazione Il software è in hosting sui server di google code 3. Per scaricarlo è sufficiente collegarsi e scaricare l ultima versione disponibile del progetto mediante il tool di versionamento subversion 4. svn checkout http://rasip.googlecode.com/svn/trunk/ rasip-read-only Per compilare i sorgenti è necessario scaricare il wireless toolkit (WTK) direttamente dal sito della sun 5. 4 Conclusioni In un periodo come quello che stiamo vivendo non può essere più azzeccato un ambito di lavoro e sviluppo come quello delle telecomunicazioni mobili di nuova generazione. Questo progetto, per quanto non eccessivamente complesso, ci ha permesso di ampliare la nostra base di conoscenza verso un ambiete nuovo e innovativo come quello dei dispotivi mobili e di prendere confidenza con un protocollo che rappresenta il futuro della comunicazione mobile. Riferimenti bibliografici [1] RFC 3261 : SIP www.ietf.org/rfc/rfc3261.txt [2] UMTS: Tecniche e architetture per le reti di comunicazioni mobili multimediali ISBN: 8820335913 [3] SIP API for J2ME (JSR 180) 3 http://code.google.com/p/rasip/ 4 http://subversion.tigris.org/ 5 http://java.sun.com/products/sjwtoolkit/download.html 6