I am trying to make a basic server/client program but I ran in a problem.

Code:
Public Class Main

    Private Sub startServer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles startServer.Click
        If Not portText.Text = "" Then
            sock.LocalPort = portText.Text
            sock.Listen()
            If sock.CtlState = MSWinsockLib.StateConstants.sckListening Then
                writeLog("listening...")
            End If
        End If
    End Sub

    Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        portText.Text = 28920
    End Sub

    Private Sub sock_ConnectionRequest(ByVal sender As Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_ConnectionRequestEvent) Handles sock.ConnectionRequest
        writeLog("accepting new request id" + e.requestID)
        If sock.CtlState <> MSWinsockLib.StateConstants.sckConnected Then
            sock.Close()
        End If
        sock.Accept(e.requestID)
    End Sub

    Private Sub sock_Error(ByVal sender As System.Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_ErrorEvent) Handles sock.Error
        writeLog(e.description)
    End Sub

    Private Sub stopServer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles stopServer.Click
        sock.Close()
        writeLog("Stop listening ...")
    End Sub

End Class
This is the server part. writeLog writes some lines of whats going on to a textfield.

the client
Code:
Public Class Main

    Dim connected As Boolean

    Private Sub connectButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles connectButton.Click
        If Not ipText.Text = "" Then
            Try
                sock.RemoteHost = ipText.Text
                sock.RemotePort = CInt(portText.Text)
                sock.Connect()
                connectButton.Enabled = False
            Catch ex As Exception
                writeLog(ex)
            End Try
        End If
    End Sub

    Private Sub sendButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles sendButton.Click
        writeLog(sendText.Text)
        sock.SendData(sendText.Text)
        sendText.Text = ""
    End Sub

    Private Sub exitButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles exitButton.Click
        sock.Close()
        connectButton.Enabled = True
        statusLabel.Text = "disconnected"
    End Sub

    Private Sub sock_ConnectEvent(ByVal sender As Object, ByVal e As System.EventArgs) Handles sock.ConnectEvent
        writeLog("connected")
    End Sub

    Private Sub sock_Error(ByVal sender As System.Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_ErrorEvent) Handles sock.Error
        writeLog(e.description)
    End Sub

    Private Sub sock_DataArrival(ByVal sender As System.Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent) Handles sock.DataArrival
        Dim dat As String = Nothing
        sock.GetData(dat)
        If Not dat = Nothing Then
            writeLog(dat)
        End If
    End Sub

    Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ipText.Text = "192.168.1.100"
        portText.Text = "28920"
    End Sub

End Class
When I click connect in the GUI the first state of sock.ctlstate is 6 , connecting then the connected event is triggered and after that the sock.ctlstate is 8 , "Peer is closing the connection". But I dont understand why it does this. I should keep the connection alive to communicate.

anyone sees my flaw of logic in the code? Please enlighten me!

Thanks in advance