Server e lista clients

giovedì 31 maggio 2007 - 08.26

JohnAsh Profilo | Junior Member

Ciao a tutti

sto facendo un'applicazione server e, prendendo l'esempio di server con l'uso di thread su msdn ed adattandolo al VC++ sono riuscito a farlo compilare e funzionare correttamente.
Il problema è che ora dovrei mantenere un elenco dei clients connessi, il codice che ho preso utilizza una classe (StateObject) dove all'interno ci sono tutte le proprietà tipo la socket, il buffer per la ricezione .. E viene creato un thread per ogni connessione che arriva. Siccome il server deve essere una sorta di chat server, ho bisogno che se un utente invia "MSG utente2 Ciao" il messaggio venga recapitato a utente2. E per fare questo ho bisogno di controllare che esista effettivamente utente2 sul server e poi prendere la socket di utente2 per mandargli il messaggio. Come posso dunque mantenere un elenco dei clients connessi? Avevo pensato ad un array di oggetti StateObject, ma non riesco a venirne a capo perchè aggiungendo l'item StateObject ad un ArrayList al momento della connessione del client, poi quando cerco di modificare qualche proprietà all'interno della classe StateObject, non funziona.

Attendo fiducioso una vostra risposta perchè non riesco proprio a capire come risolvere il problema..
Grazie mille!

Saluti

Wamba Profilo | Expert

> Avevo pensato ad un array di oggetti StateObject, ma non riesco a venirne
>a capo perchè aggiungendo l'item StateObject ad un ArrayList
>al momento della connessione del client, poi quando cerco di
>modificare qualche proprietà all'interno della classe StateObject,
>non funziona.
>
>Attendo fiducioso una vostra risposta perchè non riesco proprio
>a capire come risolvere il problema..
>Grazie mille!
>
>Saluti

Usi il Framework 1, 2 o 3?
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba

JohnAsh Profilo | Junior Member

il 2 .. avevo dimenticato di indicarlo :-) Grazie per la tempestiva risposta!

Wamba Profilo | Expert

Non vorreiche ci fosse qualche problema di casting perchè non usi le liste con i genrics?
List<StateObject> ? o meglio un dictionary<string, StateIbject>.
Se hai dubbi su cosa sono questi oggetti o su come funzionano chiedi pure.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba

JohnAsh Profilo | Junior Member

Mi sono documentato un pò su google e msdn .. non ho mai avuto a che fare con le interfacce .. Però da quel che ho capito bisogna creare una classe che faccia un override dei metodi e proprietà dell'interfaccia .. Ho provato a prendere del codice da MSDN e ad adattarlo ma in fase di compilazione continua a dire che non ho fornito le implementazioni per GetEnumerator(), IsReadOnly ecc (tutto insomma) anche se poi nel codice ho definito le proprietà e i metodi che mi richiede..
Tra l'altro, ho notato la classe DictionaryBase .. forse è già una classe che implementa l'interfaccia IDictionary? Posso semplicemente utilizzare questa dato che tutto quello che mi serve è semplicemente memorizzare le coppie chiave/valore?

Saluti!

Wamba Profilo | Expert

>Mi sono documentato un pò su google e msdn .. non ho mai avuto
>a che fare con le interfacce .. Però da quel che ho capito bisogna
>creare una classe che faccia un override dei metodi e proprietà
>dell'interfaccia .. Ho provato a prendere del codice da MSDN
>e ad adattarlo ma in fase di compilazione continua a dire che
>non ho fornito le implementazioni per GetEnumerator(), IsReadOnly
>ecc (tutto insomma) anche se poi nel codice ho definito le proprietà
>e i metodi che mi richiede..
>Tra l'altro, ho notato la classe DictionaryBase .. forse è già
>una classe che implementa l'interfaccia IDictionary? Posso semplicemente
>utilizzare questa dato che tutto quello che mi serve è semplicemente
>memorizzare le coppie chiave/valore?
>
>Saluti!

Calma, calma.. non ci sono interfaccie da gestire devi usare le classi messe a disposizione da system.collection.generics

Qui c'è un esempio per l'uso dei list (il corrispondente generics dell'arraylist)
http://msdn2.microsoft.com/it-it/library/6sh2ey19(VS.80).aspx

e qui per i dictionary (coppie chiave-valore):
http://msdn2.microsoft.com/it-it/library/xfhwa508(VS.80).aspx

dai un occhio agli esempi e riprova

-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba

JohnAsh Profilo | Junior Member

Grazie mille! Ho modificato il codice implementando il tutto con la classe dictionary e funziona alla perfezione..

Saluti!

Wamba Profilo | Expert

>Grazie mille! Ho modificato il codice implementando il tutto
>con la classe dictionary e funziona alla perfezione..
>
>Saluti!

Mi fa piacere, ciao!
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5