Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Tabella dinamica in C

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    34

    Tabella dinamica in C

    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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Mica ho capito qual e' il problema ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: Tabella dinamica in C

    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.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    34
    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.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Utilizza una "lista semplice" ... http://en.wikipedia.org/wiki/Linked_list
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.