Programando la primera aplicación Cliente/Servidor

Estado
Cerrado para nuevas respuestas.

Shura

Dragón Ancestral Lvl 2
Programando la primera aplicación Cliente/Servidor
Parte 1

Conociendo las propiedades, métodos y eventos del Control WinSock podemos pasar a la engorrosa labor de la programación.
Para poder programar la siguiente aplicación necesitan tener el Control WinSock en el formulario, eso siempre es fundamental para que el programa ande.

Para enterder 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.

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

Control (nombre predeterminado) Propiedad (nuevo valor)
WinSock1 LocalPort = 888
Text1 Text =
Text2 Text =
Command1 Caption = "Escuchar"

Para que el ejemplo funcione a la perfección conviene que seguir la ubicación de los controles como esta indicado en la figura 1.


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.


En el Evento Click del Command1 incluimos el siguiente código; (sólo lo que esta en NEGRITA, el resto es en modo de ayuda, ya que aparece cuando se hace doble click en algun control).

Private Sub Command1_Click()
Winsock1.Listen
End Sub

Programando la primera aplicación Cliente/Servidor
Parte 2

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.

Luego en el 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).


En el evento ConnectionRequest;

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.


En el evento Click del command2;

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

Programando la primera aplicación Cliente/Servidor
Parte 3

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

Por ahora este es un simple 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.

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.

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)
WinSock1 RemotePort = 888
Text1 Text =
Text2 Text =
Text3 Text =
Command1 Caption = "Conectar"
Command2 Caption = "Enviar"

Para tener una referencia de cómo situar los controles conviene seguir la Figura 2.


Figura 2


En el método 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).

En el evento DataArrival del WinSock Control;

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.


En el método 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.
 
Estado
Cerrado para nuevas respuestas.
Arriba