[C#] Controllo IP realmente connessi

giovedì 18 giugno 2009 - 11.47

dookie07 Profilo | Newbie

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!

luxsor Profilo | Guru

Ciao Manuel,
con questa funzione potrai pingare IP delle hashtable:

Function EseguiPing(ByVal ip As String) As Boolean
Dim Flag As Boolean = True
Dim PI As New Ping
Try
Dim Replay As PingReply = PI.Send(ip)
If Replay.Status <> IPStatus.Success Then
Flag = False
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
Return Flag
End Function


Fammi sapere


------------------------
Luxsor

dookie07 Profilo | Newbie

Mi è appena venuto un dubbio... se li pingo non va bene. Perchè se uno si connette tramite router e gli crasha il pc e lo spegne... riesco comunque a pingarlo perchè il router è connesso...

PS: ho trovato la soluzione... ogni tot tempo mando una stringa al client e se ricevo la risposta entro un tot tempo ok, altrimenti il client è disconnesso, no?

Farei partire un thread per fare ciò... cosa ne pensate?

dookie07 Profilo | Newbie

Nel main ho un ciclio while(true) quindi non si esce mai. Faccio questo perchè devo rimanere in continua attesa di messaggi da parte dei client. Ora arriva la domanda: come faccio a far partire un thread in quel ciclo while, che una volta finito ciò che deve fare , si ferma per 5 minuti e che poi riparta?

EDIT: se io ho:
MyThread.Start();
MyThread.Sleep(1000);

Prima di mettere in pausa il thread, il thread finisce ciò che deve fare?


EDIT2: piccolo problema... non posso fare .Sleep... perchè? ho già fatto using System.Threading;

EDIT3: Scusate, ho sparato tante cagate! Ho risolto! XD
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