Aceptar más de una conexión con Winsock

Os voy a mostrar, como podemos aceptar varias peticiones de conexión con Winsock. Aqui doy por hecho, de que conoceis Winsock, solo que está parte es mas rebuscada.

Bueno al tajo, la idea es, mantener el control winsock siempre a la escucha, cuando llegue una petición cargamos otro Winsock y a ese se la asignamos. Así podras tener tantas conexiones quieras!

Veamos, lo primero que tienes que hacer, en el modo diseño, ir a las propiedades del Winsock y en Index poner un 0 (cero). Así conseguimos poder crear un array de controles del Winsock.

Ahora lo pondremos a escuchar, pondremos el primero, ahora mismo el unico winsock que tenemos, que es Winsock1(0), yo lo he hecho en el Load, tu donde tu quieras, un botón, ect.

Private Sub Form_Load()

'Aqui pones el puerto que quieras
Winsock1(0).LocalPort = "666"

'dejo escuchando conexiones entrantes
Winsock1(0).Listen


End Sub
Bien, primero creamos una variable en General para controlar el numero de Winsock que vamos creando y para luego poder usarlos. Yo la he llamado N ( no me he comido mucho la cabeza)

Dim N as Integer

Ahora utilizaremos el evento ConnectionRequest, para aceptar la petición de conexión, pero hay que modificarlo para que nos pille que control usamos, es decir, añadir el Index (lo marco en rojo).

Ahora, hacer mágia! jiji



Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)

On Error Resume Next

'Comprobamos que el Index sea el 0, nuestro escuchador de por vida.
If Index = 0 Then
'Sumamos uno al contador de Winsocks
N = N + 1
'Cargamos un nuevo Winsock
Load Winsock1(N)
Winsock1(N).LocalPort = 0
Winsock1(N).Accept requestID 'Aceptamos la conexión

end if

end sub

Listo! Ya tendriamos un winsock conectado. Para usarlo sería por ejemplo:

Winsock(1).SenData "Ou yeah!"

Recuerda que en cada evento del Winsock, tendrás que añadir el Index as Integer.

You liked this post? Subscribe via RSS feed and get daily updates.

5 comentarios:

  1. Buena data amigo, si puedes pon sobre sockets en vb.net

  2. Joder, buenísimo, andaba buscando ésto y en ningún sitio...
    Me extraña que no haya agradecimientos... En fin, poca gente agradece cosas útiles.
    Un saludo ;)

  3. justo lo que queria , gracias amigo, quisiera hacer eso en visual basic 2008 _ escribir pronto a medardo_14@hotmail.com

  4. excelente

  5. pata enviar a todos los winsock

    For a = 0 To N
    Winsock1(a).SendData "Ou yeah!"
    Next

Publicar un comentario en la entrada