Utenti:JavaIM

Wiki

Tools

Categorie

Help

edit SideBar

Una pagina a caso

Utenti.JavaIM History

Show minor edits - Show changes to output

Changed line 1 from:
(:title Instant Messaging:)
to:
(:title JavaIM:)
Deleted lines 1-2:
%titolo%''':: JavaIM ::'''
Changed line 17 from:
!!Visione d'insieme
to:
!Visione d'insieme
Changed line 23 from:
!!Istruzioni per l'uso
to:
!Istruzioni per l'uso
Changed line 40 from:
!!Dettagli tecnici
to:
!Dettagli tecnici
Changed line 50 from:
!!Il protocollo
to:
!Il protocollo
Changed line 56 from:
!!Files
to:
!Files
Changed lines 2-3 from:
%titolo%''':: Instant Messaging ::'''
to:
%titolo%''':: JavaIM ::'''
Added lines 1-63:
(:title Instant Messaging:)
%titolo%''':: Instant Messaging ::'''

JavaIM è un programma di Instant Messaging realizzato in Java, da presentare come progetto per il corso di Sistemi di Elaborazione dell'Informazione tenuto dal professor [[Uni.Damiani]] presso il DTI di Crema.

Autore: [[Dario -> Dario]]

>>left bgcolor=#f5f9fc width=215px border='2px solid #cccccc' padding=5px<<
%center%'''Indice'''

# [[#c01|Visione d'insieme]]
# [[#c02|Istruzioni per l'uso]]
# [[#c03|Dettagli tecnici]]
# [[#c04|Il protocollo]]
# [[#c05|Files]]
>><<

[[#c01]]
!!Visione d'insieme
'''JavaIM''' è un'applicazione multithreaded di instant messaging, realizzata tramite un server aperto su di una porta non nota (8080 di default) il quale accetta connessioni TCP da utenti remoti, ed è anche in grado di effettuare chiamate verso server remoti.
È stato realizzato un protocollo minimale per gestire la chiamata e l'accettazione, e un'interfaccia grafica per organizzare il tutto.
Il programma è scritto in Java; il codice è stato steso con NetBeans 5.5.

[[#c02]]
!!Istruzioni per l'uso
Per lanciare JavaIM da console:
java -jar javaim2 [porta]
Il parametro porta è opzionale. Se non indicato, il server viene aperto sulla porta 8080.

La finestra principale permette di impostare il nome dell'utente, che viene stabilito all'avvio del programma tramite il riconoscimento del nome dell'utente attuale del sistema operativo, e i parametri di chiamata. Il nome viene usato per l'identificazione nella conversazione.
L'area in basso nella finestra serve per notificare all'utente eventuali messaggi di errore.
La chiusura della finestra principale termina il programma.

La chiamata avviene specificando un'indirizzo IP ed una porta. Il programma provvederà a tentare di stabilire una connessione col server in ascolto su quell'IP ed a quella porta, e a negoziare una conversazione.
In caso invece di ricezione di richieste di conversazione, all'utente verrà chiesto se accettare o no.

La finestra di chat è composta da tre aree di testo. Nell'area superiore vengono visualizzati i messaggi locali e remoti degli utenti impegnati nella conversazione. Al centro si scrivono i messaggi che si vogliono inviare (premere Invio durante la digitazione o il pulsante Invia hanno lo stesso effetto di inviare il messaggio sul socket). In basso sono indicati eventuali messaggi di stato o di errore.

Chiudendo la finestra di chat si interrompe la conversazione. È anche possibile interromperla scrivendo il messaggio '''/quit'''. In questo caso la finestra non verrà chiusa. La finestra non verrà chiusa nemmeno se l'utente remoto terminerà la conversazione.

[[#c03]]
!!Dettagli tecnici
La classe principale si chiama '''Main'''. Il metodo statico '''public static void main(String[] args)''' crea un nuovo thread contenente un'istanza di Main. Questa a sua volta crea la finestra principale ed un altro thread che gestisce il server.
Il server, quando riceve una chiamata, istanzia una nuova classe '''Ricezione''' in un nuovo thread. Questa si occuperà di gestire il protocollo, il socket e la finestra di chat relativa a quella conversazione.
L'attivazione del bottone '''Chiama''' dalla finestra principale istanzia la classe '''Chiamata''' in un nuovo thread. Questa si occuperà di chiamare il server remoto, negoaziare la conversazione e gestire una finestra di chat.

La comunicazione tra i vari thread è affidata alle interfacce '''MainInterface''', '''FinestraChatInterface''', '''FinestraPrincipaleInterface''', '''ComunicazioneInterface'''. Esse espongono i metodi necessari ad un thread per comunicare con gli altri. Alla creazione di una nuova istanza di una classe viene passata un'istanza di una delle interfacce qui menzionate, per garantire la comunicazione.

Per conoscere i dettagli implementativi si può dare un'occhiata al codice, che è stato commentato, e alla documentazione JavaDOC generata automaticamente per il progetto.

[[#c04]]
!!Il protocollo
Il protocollo è molto semplice. Tutti i messaggi sono seguiti da un indicazione di nuova riga, per identificarli in modo semplice.
Quando viene inviata una richiesta di conversazione, dopo l'accettazione e il passaggio del nuovo socket a '''Ricezione''', il ricevente rimane in ascolto . Il chiamante invia il proprio nome utente. Il ricevente chiede all'utente se vuole conversare con l'utente remoto. In caso di risposta affermativa, il ricevente invia sul socket il messaggio '''OK''' seguito da un nuovo messaggio contenente il proprio nome. A quel punto la conversazione è iniziata. Se l'utente rifiuta la conversazione, viene inviato il messaggio '''NO'''.
Durante la conversazione, l'unico comando riconosciuto è '''/quit''', che serve per interromperla.

[[#c05]]
!!Files
* [[(Attach:)javaim.zip]]
* [[(Attach:)javaim.pdf]]

----
[[!Progetti]]