Programación con WinSock Control
Protocolos TCP/IP y UDP
Como anteriormente quedó aclarado dos programas se pueden conectar entre sí a través de internet o de una LAN.
Internet usa el protocolo TCP/IP que significa "Transmision Control Protocol / Internet Protocol", es el que se encarga de recibir paquetes de información y redirigirlos al usuario final que los solicitó. Este protocolo es el preferido por todos ya que posee una característica que UDP le envidia, TCP/IP puede verificar que el paquete de información haya llegado con éxito al destinatario final, concretando así la transacción.
Por el contrario UDP no puede hacer esto, solo manda el paquete con la información y no verifica que haya llegado satisfactoriamente, poniendo de esta manera en peligro al paquete, ya que puede no llegar entero al destinatario y por lo tanto no sirve si el paquete no llega en su totalidad.
Todas las máquinas que están conectadas a Internet tienen asignadas un número que se forma con 4 cifras de 3 dígitos (que no pueden superar al número 255). Ejemplo del IP máximo que se puede encontrar: 255.255.255.255
Propiedades, métodos y eventos de WinSock
Una vez que tenemos el WinSock control en nuestra barra de controles en Visual Basic ya podemos comenzar a ver las propiedades, eventos y métodos más importantes del control. Para agregarlo manualmente ir a Proyecto> Componentes> y luego seleccionar WinSock Control y Aceptar. Como mencionamos anteriormente este control no es visible en tiempo de ejecución.
Primero abrimos un proyecto (EXE Estándar) y colocamos en control en cualquier parte del formulario. Vamos a comenzar por ver las propiedades, estas pueden ser puestas en tiempo de diseño como también en tiempo de ejecución. A continuación se detallan las propiedades más importantes.
Lista de propiedades más importantes
- LocalIP: Devuelve la dirección IP de la máquina local en el formato de cadena con puntos de dirección IP (xxx.xxx.xxx.xxx).
- LocalHostName: Devuelve el nombre de la máquina local.
- RemoteHost: Establece el equipo remoto al que se quiere solicitar la conexión.
- LocalPort: Establece el puerto que se quiere dejar a la escucha.
- RemotePort: Establece el número del puerto remoto al que se quiere conectar.
- State: Verifica si el Control WinSock esta siendo utilizado o no.
La sintaxis de cada propiedad es Objeto.Propiedad = Valor
Donde Objeto va el nombre del Control WinSock, el nombre predeterminado cuando lo incluimos en alguna aplicación es "WinSock1". Luego le sigue la propiedad que deseamos asignar y finalmente el valor que la misma tomará.
Ejemplo de la propiedad LocalIP
Si queremos probar la propiedad LocalIP debemos seguir los siguientes pasos: Crear un Proyecto (EXE Estándar) y agregar el WinSock Control. Luego agregar una etiqueta vacía, es decir un Label. Por último, introduzca el siguiente código.
Agregar etiqueta
Private Sub Form_Load()
Label1.caption = WinSock1.LocalIP
End Sub
Este simple ejemplo nos da de forma rápida nuestro IP, aunque no estemos conectados a Internet el IP aparece igual, solo que siempre va a tomar el valor : 127.0.0.1
Lista de Métodos más importantes
Ahora que sabemos manejar las propiedades podemos seguir con los Métodos. A continuación se muestra la lista de algunos de los Métodos más importantes del Control WinSock.
- Accept: Sólo para las aplicaciones de servidor TCP. Este método se utiliza para aceptar una conexión entrante cuando se está tratando un evento ConnectionRequest.
- GetData: Recupera el bloque actual de datos y lo almacena en una variable de tipo Variant.
- Listen: Crea un socket y lo establece a modo de escucha.
- SendData: Envía datos a un equipo remoto.
Lista de Eventos más importantes
- ConnectionRequest: Se produce cuando el equipo remoto solicita una conexión. Sin este evento no se puede llevar a cabo la conexión.
- Connect: Se produce cuando el equipo local se conecta al equipo remoto y se establece una conexión.
- Close: Se produce cuando el equipo remoto cierra la conexión. Las aplicaciones deben usar el método Close para cerrar correctamente una conexión TCP.
- DataArrival: Se produce cuando llegan nuevos datos. Este evento es importante, ya que debemos hacer algo con la información que llega.
La sintaxis de los métodos y eventos es igual a la sintaxis de las propiedades, por lo cual no vamos a hacer referencia a ella.