CODIGO FUENTE Y EJECUTABLES

CHAT PROGRAMADO EN VISUAL C

Este proyecto fue desarrollado en Visual C con el fin de investigar en el campo de los SOCKETS.

Especificación

El programa consta de dos partes: Servidor y Cliente.

SERVIDOR:

Posee 5 clases: CServidorDlg, CEscuchaSocket, CClienteSocket, CAyuda y CAcerca.

1. CServidorDlg: Esta clase es la clase dialogo de la ventana principal, es la encargada de controlar la habilitacin del servidor, actualizar los clientes, leer los mensajes y enviarlos a los dems clientes por medio de los sockets. Posee una lista de punteros a los sockets de los clientes conectados.

2. CEscuchaSocket: Esta clase implementa el socket del servidor encargado de escuchar las conexiones y mensajes entrantes. Cuando un cliente se conecta, este socket lo asocia a otro socket exclusivo para este cliente, y se queda esperando mas conexiones o mensajes. Cuando recibe un mensaje, lo enva a los otros clientes.

3. CClienteSocket: Esta clase implementa los sockets del servidor encargados de establecer una conexin separada para cada nuevo cliente que se conecta. Se implementa con una lista de punteros, y cada vez que un nuevo cliente se conecta al servidor, se agrega un nodo nuevo a la lista con la direccin del socket asignado.

4. CAyuda: Esta clase es la que despliega la ayuda disponible para la aplicacin del servidor.

5. CAcerca: Esta clase es la que despliega la informacin de la aplicacin del servidor.

CLIENTE:

Posee 4 clases: CClienteDlg, CEnviaSocket, CAyuda, CAcerca.

1. CClienteDlg: Esta clase es la clase dialogo de la ventana principal, es la encargada de controlar la conexin de cada cliente con el servidor, actualizar los clientes y leer los mensajes recibidos.

2. CEnviaSocket: Esta clase implementa el socket del cliente encargado de conectarse con el servidor, para poder recibir los mensajes que este le manda. Cuando se conecta al servidor, este lo asocia a la lista de punteros que tiene, y lo deja disponible para enviarle mensajes.

3. CAyuda: Esta clase es la que despliega la ayuda disponible para la aplicacin del cliente.

4. CAcerca: Esta clase es la que despliega la informacin de la aplicacin del cliente.

Funciones Principales:

Clase CServidorDlg:

void AceptarCliente();

Esta funcin llama a la funcin Accept() del socket del servidor que est escuchando y esperando nuevas conexiones o mensajes, para aceptar una nueva conexin. Cuando se acepta el cliente, se agrega un socket para el cliente a la lista de sockets conectados.

void RecibirMensaje(CClienteSocket * elSocket);

Esta funcin llama a la funcin Receive() del socket del servidor que esta escuchando, para recibir un nuevo mensaje, el cual trae un cdigo de mensaje. Esta funcin identifica el tipo de mensaje y llama a la funcin adecuada.

void LeerMensaje(CString elMensaje);

Esta funcin agrega los mensajes al ListBox de los mensajes.

void EnviarMensaje(CString elMensaje);

Esta funcin enva un mensaje a todos los clientes que aparecen en la lista de punteros a los sockets de los clientes conectados.

void BorrarCliente(CString elMensaje);

Esta funcin se activa cuando un cliente sale del sistema. Elimina al cliente de la cadena de caracteres y del ListBox de clientes conectados.

void EnviarClientes();

Esta funcin enva la cadena de caracteres de clientes actualizada a todos los clientes conectados.

void RevisarVacios();

Esta funcin controla que los campos obligatorios no se dejen vacos.

void ActualizarClientes();

Esta funcin agrega un cliente nuevo a la cadena de caracteres y al ListBox de clientes conectados. Cuando termina de actualizar la cadena de caracteres, llama a la funcin

Clase CEscuchaSocket:

virtual void OnAccept(int nErrorCode);

Esta funcin se activa cuando el socket del servidor que est escuchando, recibe una nueva solicitud de conexin. Cuando se activa, llama a la funcin AceptarCliente de la clase CServidorDlg.

Clase CClienteSocket:

virtual void OnReceive(int nErrorCode);

Esta funcin se activa cuando el socket del servidor de un cliente determinado que est conectado recibe un mensaje. Cuando se activa, llama a la funcin RecibirMensaje de la clase CServidorDlg.

Clase CClienteDlg:

void RevisaVacios();

Esta funcin controla que los campos obligatorios no se dejen vacos.

void RecibirMensaje();

Esta funcin llama a la funcin Receive() del socket del cliente que esta conectado al servidor, para recibir un nuevo mensaje, el cual trae un cdigo de mensaje. Esta funcin identifica el tipo de mensaje y llama a la funcin adecuada.

void LeerMensaje(CString elMensaje);

Esta funcin agrega los mensajes al ListBox de los mensajes.

void BorrarCliente(CString elMensaje);

Esta funcin se activa cuando un cliente sale del sistema. Elimina al cliente de la cadena de caracteres y del ListBox de clientes conectados.

void ActualizarClientes();

Esta funcin agrega un cliente nuevo a la cadena de caracteres y al ListBox de clientes conectados.

Clase CEnviaSocket

virtual void OnReceive(int nErrorCode);

Esta funcin se activa cuando el socket del cliente conectado al servidor recibe un mensaje. Cuando se activa, llama a la funcin RecibirMensaje de la clase CClienteDlg.

CODIGO FUENTE Y EJECUTABLES

1