Cómo programar aplicaciones Cliente/Servidor en Visual Basic utilizando el Control WinSock

Conociendo las propiedades, m�todos y eventos del Control WinSock podemos pasar a la labor de la programaci�n.

El siguente es un programa Servidor, lo que hace es: designar un puerto, dejarlo a la escucha para aceptar conexiones, si se realiza una petici�n de conexi�n aceptarla, y por �ltimo enviar datos al Cliente y recibir los datos que �ste mande.

.�Identificaci�n de controles de la aplicaci�n Servidor

Para poder programar la siguiente aplicaci�n necesitan tener el Control WinSock en el formulario.

Para entender el correcto funcionamiento del protocolo TCP/IP vamos a empezar por programar la aplicaci�n Servidor a la cual luego se conectar� el Cliente.

Comenzamos por crear un proyecto nuevo (EXE est�ndar) para el Servidor, y agregamos la siguiente lista de controles al formulario principal. La ubicaci�n de dichos controles es a gusto del programador, siempre tratando de que el usuario final este a gusto con el producto y que se pueda manejar libremente sin problemas por el entorno del mismo.

  • WinSock Control
  • 2 cajas de texto (TextBox)
  • 2 botones.

.�Cambiar propiedades de los controles

A continuaci�n hace falta que cambiemos algunas propiedades de los controles, esta es la lista de controles con las respectivas propiedades a cambiar.

Control (nombre predeterminado) Propiedad (nuevo valor)
WinSock1LocalPort = 888
Text1Text =
Text2 Text =
Command1 Caption = "Escuchar"
Command2 Caption = "Enviar"

Para que el ejemplo funcione a la perfecci�n conviene que seguir la ubicaci�n de los controles como esta indicado en la siguiente imagen.

Programa servidor

.�C�digo

Una vez hecho esto podemos empezar a tipear c�digo. El sangrado del programa es una cuesti�n de entendimiento para el programador, algunos recurren a �ste como otros no, eso tambi�n queda a criterio del que programa.

Evento click del Command1

Private Sub Command1_Click()
   Winsock1.Listen
End Sub

Esto hace que el Control WinSock empiece a funcionar, escuchando el puerto que se indic� en las propiedades de dicho control. Este puerto es el 888. Ahora si realizamos todo a la perfecci�n el puerto 888 esta siendo vigilado para aceptar conexiones remotas.

Evento DataArrival del WinSock

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)   
   Dim datos As String
   Winsock1.GetData datos
   Text1.Text = Text1.Text + datos
End Sub

Datos queda transformada en una variable de cadena, y WinSock almacena los datos que recibe del Cliente en el buffer y luego ingresan a la variable datos, dicha variable mostrar� su contenido en el control TextBox (Text1).

Evento ConnectionRequest del Winsock

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
   Winsock1.Close
   Winsock1.Accept requestID
End Sub

Este evento es muy importante, permite aceptar la petici�n de conexi�n. Sin este evento el resto del programa no tendr�a efecto.

Evento Click del command2

Private Sub Command2_Click()
   Dim enviar As String
   enviar = Text2.Text
   Winsock1.SendData enviar
End Sub

Esto permite enviar el texto que se introduzca en el TextBox n�mero 2.

.�Identificaci�n de controles de la aplicaci�n Cliente

Para seguir programando el Cliente hace falta crear un nuevo proyecto y en el formulario principal incluir la siguiente lista de controles:

  • - WinSock Control
  • - 3 cajas de texto (TextBox)
  • - 2 botones.

.�Cambiar propiedades de los controles

Como lo hicimos anteriormente hace falta cambiar algunas propiedades. Debajo la lista de controles con las respectivas propiedades para cambiar.

Control (nombre predeterminado) Propiedad (nuevo valor)
WinSock1LocalPort = 888
Text1Text =
Text2 Text =
Text3 Text =
Command1 Caption = "Conectar"
Command2 Caption = "Enviar"

Para tener una referencia de c�mo situar los controles observe la siguiente captura.

Programa cliente

.�C�digo

Evento click del Command1

Private Sub Command1_Click()
   Winsock1.RemoteHost = Text3.Text
   Winsock1.Connect
End Sub

El evento connect permite conectar al programa servidor que esta esperando la solicitud, este evento requiere un par�metro fundamental, el IP o nombre de host el cual es introducido previamente a la conexi�n en el cuadro de texto n�mero 3 (Text3).

Evento DataArrival del WinSock

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
   Dim datos As String
   Winsock1.GetData datos
   Text1.Text = Text1.Text + datos
End Sub

Esto permite a la aplicaci�n (a trav�s de WinSock) recibir informaci�n del servidor y mostrarla en pantalla.

Evento Click del command2

Private Sub Command2_Click()
   Dim enviar As String
   enviar = Text2.Text
   Winsock1.SendData enviar
End Sub

Estas instrucciones son necesarias para enviar informaci�n al servidor.

Este ejemplo del primer programa Cliente / Servidor es muy simple, para utilizarlo al m�ximo es necesario por ejemplo poner las propiedades de los TextBox en Multiline, lo que hace que si los datos recibidos exceden el tama�o del TextBox estos datos vayan directo a la l�nea de abajo.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO