Vic91 Ответов: 1

Как я могу закрыть соединение 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?

1 Ответов

Рейтинг:
0

Ganesan Senthilvel

использование методологии может решить эту проблему следующим образом:

using (TcpClient tcpClient = new TcpClient())
{
   if (tcpClient != null)
   {
    tcpClient.GetStream().Close();
    tcpClient.Close();
    tcpClient = null;
   }
}


Vic91

Как вы думаете, вы могли бы предоставить кодировку vb для этого, пожалуйста? Я попытался перевести его, но получил ошибку. Я предполагаю, что я должен написать это на субмарине, которая ждет ходатайств клиентов?