16/01/09 8:29
jackk87
Buongiorno,
ho creato un programma di chat su due progetti diversi con TCPClient e TCPListener.
L'invio e la ricezione dei dati è gestita da un timer adesso ho un problema cioè se il client clicca sul pulsante disconnetti come faccio a chiudere tutte le connessioni e a far capire al server che il client si è disconnesso e che si deve mettere in ascolto di nuovo?
ho provato con:
TCPClient.Client.Disconnect(true)
NetStr.Close()
TCPClient.Close()
ma mi va il loop il programma cioè si blocca...mentre così:
NetStr.Close()
TCPClient.Close()
si disconnette però non mi permette di riconnettermi di nuovo quindi dovrei chiudere e riaprire il programma e cmq rimane sempre il problema che il server non si accorge che il client si è disconnesso...qualcuno può aiutarmi?grazie
Ultima modifica effettuata da jackk87 16/01/09 8:30
aaa
16/01/09 17:01
Il Totem
Devi inviare una stringa che comunichi la chiusura al server, poi disconnettere e chiudere il client, quindi reinizializzare il listener (una volta che il server ha ricevuto il messaggio di chiusura).
aaa
17/01/09 14:26
Il Totem
Presumo che quello sia il codice del client (poiché nel server la variabile che contiene l'oggetto TcpClient viene reinizializzata per ogni nuova connessione). Per prima cosa, prova ad utilizzare l'overload di Disconnect che accetta un parametro booleano (Disconnect(True)): questo dovrebbe consentire il riutilizzo del socket. Se non funziona, puoi istanziare un nuovo oggetto tcp client.
aaa
20/01/09 9:57
jackk87
ho risolto bastava inizializzare il cliet nel pusante connetti come nell'esempio:
Private client As System.Net.Sockets.TcpClient
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs Handles Button1.Click
client = New System.Net.Sockets.TcpClient
client.Connect("localhost", 5044)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
client.Client.Close()
End Sub
cmq grazie a tutti per l'aiuto
Ultima modifica effettuata da jackk87 20/01/09 9:58
aaa