visual basic winsock control and multiple client connections

From: Marcel van Velzen <marcel.van.velzen_at_cousin-it.com>
Date: 1998/11/20
Message-ID: <01be1403$2deb3800$ac421bac_at_marcel.sisinfor.ts.es>


Dear All,

I am working with the winsock control in Visual Basic 5.0.

I have succesfully made a connection between a Server program which is listening for incoming request and one Client program which is trying to connect to a remote port number.

My questions now are:
- How can I let multiple client programs make connections to the same server program. I want a maximum of 5 client connections to one server program.
- How can I let Windows know that I have one server program which always will listen to a specific port number ?

I have included the sample code which I have working sofar.

Thanks in advance,

Marcel van Velzen

marcel.van.velzen_at_cousin-it.com

server program: normal project, one form (form1) with one winsock control
(winsock1), one textbox (text1), one timer control (timer1)
Private Sub Form_Load()

    Winsock1.Listen
End Sub

Private Sub Timer1_Timer()

    PrintStatus
End Sub

Private Sub Winsock1_Close()

    MsgBox "SERVER - Close"
    Winsock1.Close
    Winsock1.Listen
End Sub

Private Sub Winsock1_Connect()

    MsgBox "SERVER - Connect"
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal lonRequestID As Long)     

    MsgBox "SERVER - connection request"     

    If Winsock1.State <> sckClosed Then

       Winsock1.Close
    End If     

    Winsock1.Accept lonRequestID
End Sub

Private Sub Winsock1_DataArrival(ByVal lonBytesTotal As Long)

    Dim strInput As String     

    Winsock1.GetData strInput, vbString, lonBytesTotal     

    MsgBox "SERVER - Data = " & strInput     

End Sub

Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)

    MsgBox "SERVER - Error" & Description End Sub

Sub PrintStatus()

    Dim lstrStatus(10) As String

    lstrStatus(1) = "sckClose"
    lstrStatus(2) = "sckOpen"
    lstrStatus(3) = "sckListening"
    lstrStatus(4) = "sckConnectionPending"
    lstrStatus(5) = "sckResolvingHost"
    lstrStatus(6) = "sckHostResolved"
    lstrStatus(7) = "sckConnecting"
    lstrStatus(8) = "sckConnected"
    lstrStatus(9) = "sckClosing"
    lstrStatus(10) = "sckError"
    Select Case Winsock1.State
        Case sckClose
            intIndex = 1
        Case sckOpen
            intIndex = 2
        Case sckListening
            intIndex = 3
        Case sckConnectionPending
            intIndex = 4
        Case sckResolvingHost
            intIndex = 5
        Case sckHostResolved
            intIndex = 6
        Case sckConnecting
            intIndex = 7
        Case sckConnected
            intIndex = 8
        Case sckClosing
            intIndex = 9
        Case sckError
            intIndex = 10

    End Select
    Text1.Text = Str(Winsock1.State) & "-" & lstrStatus(intIndex) End Sub

client program: normal project, one form (form1), one timer control
(timer1), one textbox (text1), three command buttons (connect=command1,send
data=command2, close=command3)
Private Sub Command1_Click()

    If Winsock1.State <> sckClosed Then

        Winsock1.Close
    End If
    Winsock1.LocalPort = 0
    Winsock1.Connect
End Sub

Private Sub Command2_Click()

    Winsock1.SendData "marcel"
End Sub

Private Sub Command3_Click()

    Winsock1.Close
End Sub

Private Sub Form_Load()

End Sub

Private Sub Timer1_Timer()

    PrintStatus
End Sub

Sub PrintStatus()

    Dim lstrStatus(10) As String

    lstrStatus(1) = "sckClose"
    lstrStatus(2) = "sckOpen"
    lstrStatus(3) = "sckListening"
    lstrStatus(4) = "sckConnectionPending"
    lstrStatus(5) = "sckResolvingHost"
    lstrStatus(6) = "sckHostResolved"
    lstrStatus(7) = "sckConnecting"
    lstrStatus(8) = "sckConnected"
    lstrStatus(9) = "sckClosing"
    lstrStatus(10) = "sckError"
    Select Case Winsock1.State
        Case sckClose
            intIndex = 1
        Case sckOpen
            intIndex = 2
        Case sckListening
            intIndex = 3
        Case sckConnectionPending
            intIndex = 4
        Case sckResolvingHost
            intIndex = 5
        Case sckHostResolved
            intIndex = 6
        Case sckConnecting
            intIndex = 7
        Case sckConnected
            intIndex = 8
        Case sckClosing
            intIndex = 9
        Case sckError
            intIndex = 10

    End Select
    Text1.Text = Str(Winsock1.State) & "-" & lstrStatus(intIndex) End Sub

Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)

    MsgBox "CLIENT - " & Description
End Sub Received on Fri Nov 20 1998 - 00:00:00 CET

Original text of this message