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