I am trying to make a basic server/client program but I ran in a problem.
This is the server part. writeLog writes some lines of whats going on to a textfield.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
the client
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.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
anyone sees my flaw of logic in the code? Please enlighten me!
Thanks in advance




Reply With Quote