| La mia chat
Descrizione Il programma consiste di due eseguibili. Il server per la mia chat.exe va eseguito sul computer che fungerà da server per la chat, cioè al quale si collegheranno tutti gli altri utenti. L'utente che usa l'applicazione server assume automaticamente il ruolo di operatore, in quanto può decidere se accettare o no le connessioni di utenti alla chat, oppure espellere utenti già connessi. Quando si avvia l'applicazione server, si devono scegliere il nome della chat, il nickname dell'operatore e la porta sulla quale avviare il server (700 di default). Se la porta specificata è in uso da un altro programma, appare un codice di errore 10048. In questo caso provare un'altra porta. Avviando più istanze del programma specificando porte diverse, si possono creare più chat (come fossero diverse "stanze"). La mia chat.exe è l'applicazione client che deve essere eseguita sugli altri computer. In questo caso all'avvio si devono specificare l'indirizzo del server (l'IP o un alias - ad esempio in una LAN basta indicare il nome che identifica in rete il computer server), la porta su cui il server ha creato la chat, e il nickname scelto. Inoltre si può attivare l'opzione Modalità protetta, che serve a disattivare alcune funzioni descritte più avanti. Quando un client prova a connettersi, appare sull'applicazione server una finestra che indica l'indirizzo IP e il nickname dell'utente che vuole entrare nella chat e chiede all'operatore se accettare o no la connessione. E' possibile automatizzare questa funzione, come descritto più avanti in Opzioni del server. Le due applicazioni hanno un'interfaccia simile, con la differenza che l'applicazione server (mostrata qui sotto) ha qualche opzione in più. 
Nella lista degli utenti, l'operatore è sempre indicato per primo con un'icona gialla. Gli altri utenti appaiono di seguito in ordine alfabetico, con un'icona verde. Cliccando col tasto destro su un utente nella lista si accede ad un menu che nell'applicazione client contiene solo la funzione Conversazione privata (fra l'altro accessibile direttamente col doppio clic). Questa funzione permette di aprire una finestra di chat privata con l'utente selezionato. Nell'applicazione server il menu contestuale include altre opzioni: Espelli e Disconnetti permettono di rimuovere l'utente dalla chat. Mentre con la prima opzione viene inviato all'utente il messaggio "Sei stato espulso dalla chat" (e allo stesso tempo agli altri utenti viene inviato il messaggio "X è stato espulso dalla chat"), la seconda opzione disconnette "brutalmente" l'utente senza alcun messaggio. Per evitare che un utente espulso possa provare a riconnettersi subito dopo, prima di espellerlo aggiungete il suo IP alla lista degli IP vietati. Spia permette di ottenere informazioni "riservate" sull'utente (in particolare il nome del computer, dell'utente di Windows, e la versione di Windows installata); Scherzi contiene una serie di "scherzi" da giocare all'utente, come la finta cancellazione della cartella di Windows, l'apparizione di un messaggio di errore e di uno schermo nero (da cui si può uscire premendo Esc o Invio), l'espulsione del CD-ROM, l'apertura di un file o di un indirizzo internet. Ho inserito queste funzioni di dubbia "correttezza" per dimostrare come sia facile che un qualunque programma che abbia accesso a internet possa inviare ad un server informazioni riservate sul sistema, o addirittura eseguire operazioni dannose. Ci dobbiamo quindi fidare dell'onestà dei programmatori: nel mio caso basta che nell'avvio dell'applicazione client si scelga l'opzione Modalità protetta, perchè queste funzioni non abbiano alcun effetto. Indirizzo IP comprende opzioni per visualizzare l'indirizzo IP dell'utente e per aggiungerlo alla lista degli IP ammessi o vietati (vedi Opzioni del server).
Quando si chiude il programma, viene chiesto se salvare in un file di testo la sessione di chat. Opzioni del server Nell'applicazione server, cliccando su Opzioni... si accede alla finestra Opzioni del server. Qui è possibile accedere alle liste degli IP ammessi e degli IP vietati. Nel comportamento predefinito, il programma accetta automaticamente le connessioni da IP presenti nella prima lista, rifiuta automaticamente quelle provenienti da IP nella seconda lista, e se l'IP non è presente in nessuna delle due liste, visualizza una finestra di conferma in cui si può scegliere se accettare o no la connessione (inoltre mettendo un segno di spunta in Accetta/rifuta sempre la connessione da questo IP, l'IP in questione viene aggiunto agli IP ammessi o vietati a seconda della decisione scelta). E' possibile aggiungere manualmente indirizzi alle liste usando il blocco note, oppure aggiungere l'IP di un utente della chat mediante il menu contestuale. La finestra di dialogo opzioni permette inoltre di cambiare il comportamento del programma, scegliendo fra le opzioni: Chiedi conferma per le connessioni da IP che non sono nelle due liste: comportamento predefinito appena descritto; Accetta automaticamente tutte le connessioni tranne quelle da IP vietati; Rifiuta automaticamente tutte le connessioni tranne quelle da IP ammessi; Accetta automaticamente tutte le connessioni.
Suoni del programma Potete cambiare a vostro piacimento i suoni associati ai diversi eventi nella chat. I nomi dei file sono: msg.wav (messaggio), userin.wav (un utente si è unito alla chat), userout.wav (un utente ha lasciato la chat) e spy.wav (riprodotto quando si viene "spiati" dal server). Consiglio: per provare le funzionalità del programma su un unico computer, avviate l'applicazione server, quindi quella client indicando come indirizzo "127.0.0.1". Note sul programma Naturalmente questo programma non ha la pretesa di sostituire programmi di chat molto più elaborati disponibili in rete, anche se può rivelarsi utile in particolare in una rete LAN. Per me è stato un esercizio di programmazione di un applicazione di rete. Raccomando di segnalarmi eventuali problemi nel funzionamento del programma. "La mia chat" è stato realizzato in Visual C++ con l'utilizzo delle librerie MFC. In particolare si basa sull'utilizzo della classe CSocket delle MFC, per gestire le funzioni che riguardano la rete. La classe CSocket fornisce un elevato livello di astrazione, permettendo di accedere alla rete senza doversi preoccupare del protocollo utilizzato e di altri dettagli. La maniera più semplice di utilizzare la classe CSocket è quella di associarvi due oggetti di tipo CArchive (uno per l'input e uno per l'output), in cui inserire o estrarre informazioni mediante gli operatori << e >>. Inoltre conviene creare delle proprie classi derivate da CSocket, per poter personalizzare i metodi OnReceive(), OnSend(), etc... Per maggiori dettagli consultate la MSDN Library. Licenza Freeware Download Il programma è contenuto in un file zip e non necessita di installazione. Scompattatelo in una cartella a vostra scelta e da questa avviate gli eseguibili, oppure create i relativi collegamenti nel menu avvio. |