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()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)
'Aqui pones el puerto que quieras
Winsock1(0).LocalPort = "666"
'dejo escuchando conexiones entrantes
Winsock1(0).Listen
End Sub
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.
5 comentarios:
Buena data amigo, si puedes pon sobre sockets en vb.net
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 ;)
justo lo que queria , gracias amigo, quisiera hacer eso en visual basic 2008 _ escribir pronto a medardo_14@hotmail.com
excelente
pata enviar a todos los winsock
For a = 0 To N
Winsock1(a).SendData "Ou yeah!"
Next
Publicar un comentario