PDA

Visualizza la versione completa : Tabella dinamica in C


MadAlex
02-04-2008, 18:15
Dovrei riuscire a fare una Tabella dinamica che mi tenga conto sul server (UDP) che ho realizzato in C dei client "loggati" al momento. Ogni client( ha un proprio identificativo univoco) come si avvia e si connette al server mi fa una richiesta di logon dalla quale vedo anche l'identificativo, e quando ha terminato la sessione una richiesta di logoff.
Ora a me servirebbe fare una tabella che quando un nuovo client fa il logon, mi dia l'ID del client e il suo stato loggato, e quando si sconnette, mi cancelli la riga del terminale ID che si scollegato.
Praticamente vorrei sapere istante per istante chi effettivamente agganciato al server.
Per ora l'ho fatto con un semplice array che per ogni terminale che si connette me lo stampa a video, solo che non dinamica, xke' se si sconnette a me risulta ancora nella tabella. Non so' come andarlo a cancellare praticamente.
Chiunque abbia qualche idea non sa' che favore mi fa!
Grazie in anticipo

oregon
02-04-2008, 19:39
Mica ho capito qual e' il problema ...

andbin
02-04-2008, 20:33
Originariamente inviato da MadAlex
Praticamente vorrei sapere istante per istante chi effettivamente agganciato al server.
Per ora l'ho fatto con un semplice array che per ogni terminale che si connette me lo stampa a video, solo che non dinamica, xke' se si sconnette a me risulta ancora nella tabella. Non so' come andarlo a cancellare praticamente.Vuoi gestire in "C" un array espandibile di dimensione "arbitraria"?? Si pu fare benissimo ma devi "giocare" un po' con i puntatori e con la allocazione dinamica della memoria.

Strutture dati come queste non sono fornite n dal linguaggio C n dalla libreria standard del C. Sono chiaramente da implementare (se non trovi librerie gi fatte ... chiaro), sfruttando appunto, in primo luogo, la allocazione dinamica della memoria.

Potrei scrivere del codice di esempio ma non sarebbe brevissimo e comunque non sapendo di preciso quanti/quali dati devi gestire non so quanto potrebbe essere utile.

MadAlex
03-04-2008, 19:55
Praticamente il discorso questo. Ho il mio server udp, che ha una recvfrom unica, ed in base al tipo di richiesta che gli giunge, risponde.
I vari client, come vengono lanciati (./client) fanno per prima cosa una richiesta al server di logon (devo simulare una rete cellulare in poche parole). Quindi nel buffer request gli metto un intero 1 (#define LOGON 1) in modo che il server sa che quella richiesta un logon. La stessa cosa alla fine della sessione, il client invia un logoff (#define logoff 9) e cessa ogni attivita'. Ora a me servirebbe stampare a video, ogni tot secondi, lo stato della rete virtuale, ossia una tabella con tutti i client loggati. Il problema che non so' come fare, nel senso che mi sono definito una struttura tabella, e ogni client che si collega lo metto li, ma non so' come "eliminare" un client che si scollega, tutto qui.

oregon
03-04-2008, 20:26
Utilizza una "lista semplice" ... http://en.wikipedia.org/wiki/Linked_list

Loading