Как я могу закрыть соединение TcpClient, не вызывая ошибки?
Я использую сокеты для создания приложения моделирования чата с помощью visual basic 2010. Мне удалось заставить соединение работать и отправлять и получать данные между двумя экземплярами моего приложения. Но когда я закрываю один из них, другой начинает получать последнее полученное сообщение и добавлять его в текстовое поле сообщения несколько раз, пока программа не замирает и не перестает работать. Я пробовал закрыть соединение при закрытии формы вот так:
Private Sub ChatWindow_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing If Mode = mode.Server Then ServerSocket.Stop() End If NetworkStream.Close() ClientSocket.Close() End Sub
I want the application to be able to act as server or just as client, so I've established a communication mode (server or client, if you start as server you open a tcplistener) and that seems to be working fine. It's just when I want to "Log off" or just close one of the two apps. When I researched all I could find was that I had to close the network stream as well as the tcpclient, but I tried that and I still have the same problem. How can I avoid this? How can I tell when one of the two end points disconnects and just show a message on screen to tell that the other end is no longer available? Additionally, how can I tell if there's a client available for connection, so the instance running as a server doesn't freeze when it gets no response?