Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C#] Controllo IP realmente connessi

    Salve a tutti! Ormai manca poco alla maturità e mi manca davvero poco per ultimare la mia tesina. La mia tesina comprende un nuovo client di messaggistica istantanea e, naturalmente, anche la parte server. Questo software si integrerà con un forum che ho creato per la mia scuola, quindi si accederà con il proprio username del forum e nella lista contatti si avranno tutti gli utenti del forum. Ogni volta che uno si connette creo delle hashtable, contentente il loro ip (non vi sto a raccontare tutto).
    Qui c'è il problema. Se un utente, chiude il programma o schiaccia il pulsante disconnetti, manda un messaggio al server dicendo che si sta disconnettendo e io lo elimino dalla hashtable. Ma se questo utenta stacca il cavo di rete o gli salta la corrente? Come faccio a testare se un utente è connesso o meno conoscendo il suo ip? avevo pensato ad un timer che ogni 5 minuti si mette a pingare tutti gli utenti che ho nell'hashtable. avete altre idee? se no, come faccio a creare questo timer?

    Grazie in anticipo!

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Direi che come soluzione potrebbe anche andare teoricamente ma hai dimenticato l'ipotesi che l'utenta possa chiudere il processo tramite il Task Manager con chiudi processo o il processo si chiuda a causa di un'eccezzione non gestita o di sistema ecc. ecc.. In quel caso l'utente non sarà più in linea ma alla richiesta di Ping rispondrebbe ugualemente. Forse allora meglio aggiungere un'altro campo di controllo come l'ora corrente.
    Mi spiego meglio: l'utente si connette e registra sul Server, oltre che il suo User e IP sull'HasTable anche l'ora corrente del suo PC ad intervalli regolari (ad esempio ogni minuto, chiaramente l'ora deve essere la stessa su tutti i PC). Ora con un Timer o con una Classe creata ad hoc controlli che l'ora memorizzata dall'utente che risulta essere nell'HashTable sia compresa tra l'ora corrente è l'ora corrente meno 1 minuto, ora hai la certezza che il Client sia connesso. In questa caso la richiesta di Ping non ha piu senso.
    Sbagliare è umano, perseverare è diabolico.

  3. #3
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    forse deve essere il client che invia ogni tot di tempo un messaggio del tipo "Guarda che sono on-line" e non il server.
    I got the remedy

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Si infatti intendevo il Client, mi sembra avevo detto: 'l'utente si connette e......'
    Sbagliare è umano, perseverare è diabolico.

  5. #5
    Non puoi verificare se il socket è effettivamente connesso?
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Come si fa scusa a verificare se il Socket di un'altro Pc è effettivamente connesso al server ?
    Sbagliare è umano, perseverare è diabolico.

  7. #7
    Non vai a verificare il socket dell'altro PC, ma il socket del server. Quando tu accetti una connessione con un TcpListener, usi AcceptSocket o AcceptTcpClient; ora, sia che tu ottenga un Socket sia che tu ottenga un TCPListener puoi verificare se sono effettivamente connessi verificando la loro proprietà Connected.
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.