Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
29/08/08 17:49
mestesso
Ho un problema che non riesco proprio a risolvere. E' tutto il giorno che smanetto ma non ne vengo a capo.

Avendo un server che legge dati da un client, non riesco a fare in modo che il server riconosca quando il client si disconnette.

Questo è una parte del codice del server nella sub main

tcpListen As New TcpListener(ip, porta)
tcpListen.Start()
tcpClient = tcpListen.AcceptTcpClient()
netStream = tcpClient.GetStream()

If tcpClient.Connected = True Then
Timer1.Enabled = True
End If


è questo quello del timer

If netStream.DataAvailable = True Then

Dim dato(tcpClient.ReceiveBufferSize()) As Byte

netStream.Read(dato, 0, dato.Length)        

end if


Come posso risolvere questo problema?

Ultima modifica effettuata da mestesso 29/08/08 17:52
aaa
30/08/08 7:53
Il Totem
Usando tcpclient non c'è un modo. L'unica cosa che puoi fare è, prima della chiusura della connessione da parte del client, mandare un messaggio al server che gli dica che la connessione sta per essere interrotta. Il server agirà di conseguenza distruggendo l'oggetto tcpclient.
Ricordati che per attuare una vera disconnessione devi usare il metodo TcpClient.Client.Disconnect() (e poi chiamare TcpClient.Close()).
aaa
30/08/08 11:34
mestesso
Grazie, farò delle prove. Vediamo se riuscirò a risolvere.
Se magari mi fai anche un esempio di codice riuscirò a comprendere meglio la sintassi corretta del metodo da usare.
Ultima modifica effettuata da mestesso 30/08/08 12:03
aaa
30/08/08 15:08
mestesso
Ok ci sono riuscito ma non del tutto, ho ancora problemi.
Sono riuscito a fare in modo che il server riconosce quando il client si disconnette, però adesso non riconosce quando si riconnette il client.

Ho impostato nel client un comando che avverte il server della disconnessione e dopo averlo avvertito il server esegue questa procedura
tcpClient.Client.Disconnect(True)
tcpClient.Close()


e nel timer ho messo la semplice funzione che controlla le connessioni
If tcpClient.Connected Then
...


Però sono a punto da capo perchè ora il sever sembra che non riconosce quando il client si riconnette dinuovo o forse si, però non passa più lo stesso i dati.
Sicuramente avrò fatto un errore da qualche parte.
Come risolvo?
Ultima modifica effettuata da mestesso 30/08/08 15:09
aaa
30/08/08 15:35
mestesso
Perfetto. Alla fine ce l'ho fatta!
Ho risolto con un piccolo trucchetto :-)
aaa
30/08/08 16:55
Il Totem
Posso chiudere, mestesso?
Sìsì, fai pure.
Ok, grazie.
Prego, non c'è di che.
aaa