Как работать с несколькими клиентами на сокет-сервере, сделанном с помощью winsock на VB6? - PullRequest
2 голосов
/ 19 января 2011

У меня есть очень простое приложение для чата, созданное на VB6 с использованием winsock, но, как вы можете видеть, оно принимает только одно соединение, как я могу работать с несколькими пользователями? Спасибо!

Private Sub Winsock1_Close()
    ' Finaliza la conexión
    Winsock1.Close

    txtLog = txtLog & "*** Desconectado" & vbCrLf

End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

    If Winsock1.State <> sckClosed Then
        Winsock1.Close ' close
    End If

    Winsock1.Accept requestID

    txtLog = "Cliente conectado. IP : " & _
              Winsock1.RemoteHostIP & vbCrLf

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim dat As String

    Winsock1.GetData dat, vbString
    txtLog = txtLog & "Cliente : " & dat & vbCrLf

End Sub

1 Ответ

2 голосов
/ 19 января 2011

Решение состоит в том, чтобы иметь массив объектов Winsock и создавать новый во время выполнения. Новый созданный вами объект принимает запрос на подключение.

Итак, в вашей подпрограмме запроса на подключение у вас будет новый сокет:

Dim ConnectionCount as long

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
    ConnectionCount=ConnectionCount+1

    Load Winsocks(ConnectionCount)
    Winsocks(ConnectionCount).Accept(requestID)

     txtLog = "Cliente conectado. IP : " & _
          Winsocks(ConnectionCount).RemoteHostIP & vbCrLf

End Sub

Редактировать: Вот учебник, который может помочь вам лучше, чем мой код: http://www.devx.com/tips/Tip/5488

Это следует той же идее.

...