Close socket visual basic

1

Hello, I am creating a client, server using visual Basic, for this I create a class called TCPControl with all the characteristics that my server and client will have. My question is how I could do to close the socket properly because even though I close my form the socket is still open and my process is not closed.

Form:

Public Class Form1
    Private Client As TCPControl

    Private Sub cmdSend_Click(sender As System.Object, e As System.EventArgs) Handles cmdSend.Click
        SendMessage()
        txtMessage.Clear()
        txtMessage.Focus()
    End Sub

    Private Sub cmdConnect_Click(sender As System.Object, e As System.EventArgs) Handles cmdConnect.Click
        Client = New TCPControl("IP", 64555)
        If Client.Client.Connected Then cmdConnect.Text = "Connected"
    End Sub

    Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If Client.Client.Connected = True Then
            Client.DataStream.Close()
            Client.Client.Close()
        End If
    End Sub

    Private Sub txtMessage_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles txtMessage.KeyDown
        If e.KeyCode = Keys.Enter Then SendMessage()
    End Sub

    Private Sub SendMessage()
        If Client.Client.Connected = True Then Client.Send(txtMessage.Text)
    End Sub
End Class

TcpControl:

Imports System.Net
Imports System.Net.Sockets
Imports System.IO

Public Class TCPControl

        Public Client As TcpClient
        Public DataStream As StreamWriter

        Public Sub New(Host As String, Port As Integer)
            ' CLIENT
            Client = New TcpClient(Host, Port)
            DataStream = New StreamWriter(Client.GetStream)
        End Sub

        Public Sub Send(Data As String)
            DataStream.Write(Data & vbCrLf)
            DataStream.Flush()
        End Sub
    End Class
    
asked by Perl 26.12.2016 в 17:02
source

0 answers