Bienvenido, invitado ( Identificarse | Registrarse )

 
Reply to this topicStart new topic
Multiconexión con Winsock., Lo básico sobre el control winsock
Teko
mensaje Apr 5 2008, 10:40 PM
Publicado: #1


Newbie
Ícono de Grupo

Grupo: Miembro
Edad: N/A
Temas por día: 0.00
Mensajes: 4
Hora local: Jul 31 2010, 01:39 PM
Registrado: 31-March 08
Miembro No.: 44



Hola, bueno voy ha explicar un poco como hacer una aplicacion multiconexion ( que acepta varias conexiones). Primero de todo necesitaremos añadir al projecto 2 controles winsock. Lo que haremos sera poner uno a la escucha y cuando este reciva una ConnectionRequest, es decir cuando intenten conectar con nosotros, el winsock repartira las conexiones hacia el winsock 2... Pero que pasa si el winsock 2 esta ocupado? Nada ya que crearemos un array de este control e iremos creando winsock2(x) cada vez que lo necesitemos. Vamos a comenzar.

Aplicación Multiconexión

Añadimos los controles Winsock...



Como vemos en la imagen el winsock numero 1 siempre estara a la escucha de peticiones, cuando reciva una le pasara la conexion a uno de los winsock2 con array. Los winsock2 no estan a la esucha por lo tanto esperan hasta que winsock1 les pase una conexion. Como winsock1 hace esta tarea?
CÓDIGO
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
  Dim socketCreado As Integer 'Definimos una variable integer
  
  socketCreado = CrearSocket 'Llamamos a la funcion CrearSocket MUY IMPORTANTE!
  
  Winsock2(numSocket).Accept requestID 'Aceptamos la peticion con el socket creado
End Sub


Bien con este codigo winsock1 repartira las conexiones entre el array de winsock2, bueno en realidad no faltaria la funcion CrearSocket:
CÓDIGO
Private Function CrearSocket() As Integer

  Dim Sockets As Integer 'Variable que cojera el numero de sockets
  Dim x As Integer 'Contara los sockets que ai
  
  Sockets = Winsock2.UBound 'Nos vamos hasta el final de los winsock para ver los que tenemos
  
  For x = 0 To Sockets ' Recorremos todos los winsocks

    If Winsock2(i).State = sckClosed Then 'Comprovamos los sockets inactivos
      CrearSocket =x 'Si winsock2 esta inactivo lo utilizamos
      Exit Function 'Salimos de la funcion
    End If
  Next
  
  Load Winsock2(Socket + 1) 'En el caso que no tengamos sockets inactivos, crea un socket
  
  CrearSocket = Winsock2.UBound 'Pasamos el numero de sockets actuales a CrearSocket
End Function


Bien esta quiza es la parte mas importante, ya que se encarga de mirar por los sockets inactivos o bien los crea para poder pasarles la nueva conexion entrante.

Creando un ejemplo

Ahora crearemos un ejemplo para que quede mas claro lo explicado.
Creamos un projecto y añadimos los siguientes controles:



Bueno, recordar de crear el array, para quien no sepa como hacerlo (una de las maneras):

Boton Derecho sobre el control
Copiar
Pegar en el mismo formulario
Saldra un aviso para crearlo, aceptais.

Bien ahora ya tenemos el formulario creado, pasemos al codigo...

CÓDIGO
Private Sub Winsock1_ConnectionRequest(ByVal RequestID As Long) ' Es el codigo de antes
  Dim socketCreado as integer


  socketCreado = CrearSocket
  Winsock2(socketCreado).Accept requestID

  Text1.text = Text1.text & vbNewline & "Petición Aceptada Socket num " & socketCreado & " interactuando"
End sub


Bien aqui lo unico que hacemos es informar a partir del text1 que recivimos una peticion y que esta a sido atendida por uno de los sockets.

Nuestro Winsock1 solamente ara esto, estar a la escucha para distribuir las conexiones entrantes entre el array de winsocks, por lo tanto en el command1 ponemos:

CÓDIGO
Private Sub Command1_Click()
  Winsock1.Close ' Cerramos el winsock para no dar problemas
  Winsock1.LocalPort = text3.text 'El puerto a esuchar es el que introduzcamos en text3.text
  Winsock1.Listen ' dejamos a la esucha el winsock
End Sub


Bien con este ejemplo unicamente recivimos peticiones y las mostramos por text1.text para que se vea como funciona la cosa... el ejemplo de por si no es funcional 100% pero si vale para que lo entendais.



Bueno espero que guste wink.gif
Go to the top of the page
 
+Quote Post
rubencho
mensaje Feb 23 2010, 03:47 PM
Publicado: #2


Newbie
Ícono de Grupo

Grupo: Miembro
Edad: 16
Temas por día: 0.03
Mensajes: 4
Hora local: Jul 31 2010, 06:39 AM
Registrado: 23-February 10
Desde: localhost
Miembro No.: 455



gracias me sirve ok laugh.gif
Go to the top of the page
 
+Quote Post
hdstryOwrld
mensaje Feb 23 2010, 06:05 PM
Publicado: #3


Administrador
Ícono de Grupo

Grupo: VIP
Edad: 20
Temas por día: 0.37
Mensajes: 353
Hora local: Jul 31 2010, 06:39 AM
Registrado: 26-December 07
Desde: México
Miembro No.: 1



CITA(rubencho @ Feb 23 2010, 09:47 AM) *
gracias me sirve ok laugh.gif


Visual BASIC es algo antaño pero igual es aun muy funcional en algunos casos.


--------------------
Contáctanos: staff@codebit.org
Soporte: support@codebit.org

Aprendiendo a usar el foro
Pagina de inicio

Go to the top of the page
 
+Quote Post
Lioncourt
mensaje Feb 26 2010, 07:43 PM
Publicado: #4


Advanced Member
Ícono de Grupo

Grupo: Élite
Edad: 250
Temas por día: 0.06
Mensajes: 51
Hora local: Jul 31 2010, 11:39 AM
Registrado: 3-April 08
Desde: MX
Miembro No.: 47



exelente Teko, me llamo la atencion el post y es muy buen contenido, como para hacer un servidor para tu propio protocolo biggrin.gif, hace mucho lo utilize, ahora de vb no recuerdo ya mucho XD saludos


--------------------



"Todos estan muertos solo ke aun no lo saben" (The Crow)
#n3ur0n4.org

Go to the top of the page
 
+Quote Post
hdstryOwrld
mensaje Feb 27 2010, 02:51 AM
Publicado: #5


Administrador
Ícono de Grupo

Grupo: VIP
Edad: 20
Temas por día: 0.37
Mensajes: 353
Hora local: Jul 31 2010, 06:39 AM
Registrado: 26-December 07
Desde: México
Miembro No.: 1



CITA(Lioncourt @ Feb 26 2010, 01:43 PM) *
exelente Teko, me llamo la atencion el post y es muy buen contenido, como para hacer un servidor para tu propio protocolo biggrin.gif, hace mucho lo utilize, ahora de vb no recuerdo ya mucho XD saludos


Mcrow z3r0 eres tu? Waoo por fin te sueltan la correa, seguro que no has dejado de aprender como usar el teclado no? jaja un saludo bro!! y si muy buen manual el de Teko solo que hace mucho que no lo veo por acá.


--------------------
Contáctanos: staff@codebit.org
Soporte: support@codebit.org

Aprendiendo a usar el foro
Pagina de inicio

Go to the top of the page
 
+Quote Post

Fast ReplyReply to this topicStart new topic
1 usuario(s) está(n) leyendo esta discusión (1 invitado(s) y 0 usuario(s) anónimo(s))
0 miembro(s):

 

Versión Lo-Fi Fecha y Hora actual: 31st July 2010 - 11:39 AM