Una vez que hemos leido la introduccion para la comunicacion mediante Winsock y hemos hecho los formularios, ahora solo queda programar los metodos para cada objeto creado.
Comenzaremos con el SERVIDOR:
Tengamos siempre en cuenta el formulario
Vamos a programar: Primero debemos hacer doble click en la parte del formulario al que le vamos a crear acciones o abrir su codigo e insertar lo que se detalla mas adelante.
- Boton Command2 “escuchar”
Private Sub Command2_Click() 'CERRAMOS CUALQUIER CONEXION PREVIA Winsock1.Close 'ASIGNAMOS EL PUERTO LOCAL QUE ABRIREMOS Winsock1.LocalPort = Text3.Text 'DEJA EL SOCKET ESCUCHANDO Winsock1.Listen End Sub |
Lo que acabamos de hacer es cerrar cualquier conexion previa del socket con la instruccion Close. Despues recogemos el valor del puerto con LocalPort que en este caso es asignado el valor de Text3. Por ultimo Abrimos el puerto con Listen .
Tambien podemos definir el puerto en vez de recogerlodesde Text3 con un: Winsock1.LocalPort = 555 por ejemplo.
- Peticion de Conexion
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) 'CERRAMOS PREVIAMENTE EL SOCKET Winsock1.Close 'ACEPTAMOS CONEXION Winsock1.Accept requestID End Sub |
Cuando el cliente quiera coectarse se generara el evento ConnectionRequest y se generara un ID (identificador), entonces esos parametros los usaremos para acpetar la conexion en WInsock1.Accept requestID . El close lo usamos para cerrar el socket, ya que estaba ocupado escuchando conexiones y lo necesitamos disponible para aceptar la conexion
- Enviando Datos. Boton Command1 “enviar”
Private Sub Command1_Click() 'ENVIAMOS EL CONTENIDO DE TEXT2 Winsock1.SendData Text2.Text & vbCrLf 'APUNTAMOS AL FINAL DEL CONTENIDO DEL TEXTBOX E 'INSERTAMOS LOS NUEVOS DATOS OBTENIDOS Text1.SelStart = Len(Text1.Text) 'COLOCA EL CURSOR AL FINAL DEL CONTENIDO Text1.Text = Text1.Text & "Servidor>>" & Text2.Text & vbCrLf 'MOSTRAMOS LOS DATOS Text1.SelStart = Len(Text1.Text) 'COLOCA EL CURSOR AL FINAL DEL CONTENIDO 'BORRAMOS TEXT2 Text2.Text = "" End Sub |
Con el metodo SendData enviamos los datos contenidos en Text2 al socket, y este a su vez lo recibira con el metodo GetData (explicado mas adelante). En nuestro Text1 mostraremos el contenido de Text2 y Text2 lo dejaremos en Blanco “” para volver a escribir.
- Recibiendo Datos
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim cadena As String 'VARIABLE PARA GUARDAR DATOS Winsock1.GetData cadena 'APUNTAMOS AL FINAL DEL CONTENIDO DEL TEXTBOX E 'INSERTAMOS DATOS OBTENIDOS Text1.SelStart = Len(Text1.Text) 'COLOCA EL CURSOR AL FINAL DEL CONTENIDO Text1.Text = Text1.Text & "Cliente>>" & cadena 'MOSTRAMOS LOS DATOS Text1.SelStart = Len(Text1.Text) 'COLOCA EL CURSOR AL FINAL DEL CONTENIDO End Sub |
Obtenemos los Datos con GetData y los guardamos en la variable “cadena” del tipo String, finalmente mostramos los datos.
- Desconexion, Boton Command3 “desconectar”
'CIERRA LA CONEXION |
Este es bastante sencillo, solo usamos Close para cerrar el socket y mostramos un mensaje
- Desconexion del Socket
Private Sub Winsock1_Close() |
Este es opcional, ocurre cuando el socket se cierra por el cliente.
Finalmente deberiamos tener todo el codigo y para probar nuestro programa podemos hacer click en el boton Iniciar(boton Play) o desde el menu: Ejecutar > Inciar o Presionar F5