Visual Basic - Como Hago con Mas de Un Cliente (Cliente/Servidor)

Life is soft - evento anual de software empresarial
 
Vista:

Como Hago con Mas de Un Cliente (Cliente/Servidor)

Publicado por Emanuel (153 intervenciones) el 20/11/2001 21:44:35
Tengo un demo que baje de internet que maneja el winsock y hace un chat entre ordenadore conectados en red (TCP/IP) pero como debo hacer o que es lo que se debe modificar en el cliente o en el servidor para que puedan estar mas de un cliente al mismo tiempo con el servidor? hay que cambiar algo? que?

Por favor una manito... gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como Hago con Mas de Un Cliente (Cliente/Servid

Publicado por Manu (28 intervenciones) el 21/11/2001 05:03:38
Tienes que hacer un array de winsocks, creo que en la msdn viene un ejemplo bueno de ello.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como Hago con Mas de Un Cliente (Cliente/Servid

Publicado por danielGT (3 intervenciones) el 21/11/2001 10:53:38
Si, como dice el otro amigo, tienes que hacer un array en el servidor a cada vez que alguien se conecte (evento OnConnect, o algo asi), eso se hace incrementando la propiedad Index del control winsock
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como Hago con Mas de Un Cliente (Cliente/Servid

Publicado por Manu (28 intervenciones) el 21/11/2001 12:50:28
Emanuel, te explico más o menos lo que tienes que hacer, tienes que tener 2 winsocks (o al menos así es como yo lo hago), uno para tenerlo "a la escucha" de peticiones de los clientes y otro para mandarles información (que deberá ser un array de winsocks). Estableces un puerto local de escucha, (por ejemplo el wsEscucha.localport= 2400), y que los clientes, se conecten a ese puerto. Así en el evento ConnectionRequest de ese winsock (el de escucha), aceptas la petición creando un nuevo índice de winsock en el array de winsocks:

Private Sub wsEscucha_ConnectionRequest(ByVal requestID As Long)
Dim Index As Integer
Index = FindOpenWinsock '--> Aquí buscas un index de winsock que
' esté libre

'Acepta la petición usando el winsock creado
wsArray(Index).Accept requestID

End Sub

Espero esto te sirva de ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DETALLE !!!!!!!

Publicado por Emanuel (153 intervenciones) el 21/11/2001 17:24:16
No se como crear un array de winsock. Si no es mucho molestar podria alguien decirme como lo hago... muchas ghracias por haberme contestado, de verdad....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DETALLE !!!!!!!

Publicado por Manu (28 intervenciones) el 22/11/2001 04:36:24
Te pego una función con la que hago yo el array de winsocks:
Private Sub wsEscucha_ConnectionRequest(ByVal requestID As Long)
Dim Index As Integer
Index = CreaWinsock '-->Llama a la función que crea el array
' de winsocks
'Acepta la petición usando el winsock creado
wsArray(Index).Accept requestID
End Sub
Private Function CreaWinsock()
Dim X As Integer
'Define la vble como static para q mantenga su valor
Static LocalPorts As Integer

' Recorre el array de winsocks (desde el 0 hasta el máximo _
de la matriz).
For X = 0 To wsArray.UBound

' Si encuentra uno que el estado es 0, lo que significa q _
está cerrado, que use ese índice para el winsock
If wsArray(X).State = 0 Then
FindOpenWinsock = X

' Salimos de la función ya q tenemos asignado el winsock
Exit Function
End If
Next X

' Ninguno está cerrado así q crea uno
Load wsArray(wsArray.UBound + 1)

' Asegura que no hay conflictos en los puertos locales
LocalPorts = LocalPorts + 1
wsArray(wsArray.UBound).LocalPort = wsArray(wsArray.UBound).LocalPort + LocalPorts
' y devuelve su indice
CreaWinsock = wsArray.UBound
End Function

Espero esto te sirva, un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar