Chat - Version Delphi

Presentación

Delphi es una de las mas poderosas herramientas que se han desarrollado era buenos tiempos, pues este compilador de lenguaje Pascal para Windows no solo es rápido sino que supera enormemente en utilidades, herramientas a gran cantidad de lenguajes programación de medio pelo como Basic, Fox, entre otros.

En lo que respecta al programa, el original lo escribí en C++ Builder 6.0, pero resulta que Delphi también es compatible con este pues ambos compilan código Pascal a fin de cuentas, así que no importan realmente en que se desarrolle si Delphi o C++ Builder a las finales el resultado no varían entre ellos, por eso es que mutamos este código a Delphi para ver algunas semejansas y aprender un poco mas acerca de los Sockets y el protocolo TCP/IP que es con el que trabajan las clases TClientSocket y TServerSocket

Img00.jpg
Programa chat hecho en Delphi ejecutándose


El Protocolo TCP/IP

El Protocolo de Control de Transmisión ( Transmisión Control Protocol ) el de mas fácil uso para aplicaciones en entornos Internet e Intranet, pues este protocolo se basa en 4 niveles, y un montón de normas,... pero eso no es lo importante.

Lo que debes saber es que TCP/IP necesita de una conexión entre Servidor-Cliente de este modo puede comprobar si los paquetes que se envian llegan con integridad o no de modo que corrija los envios si tiene que hacerlo. Ademas de esto

Winsock API

( Windows Sockets Apllication Program Interface ) son librerías para los socket desarrollados en Berkley para el sistema operativo UNIX, los cuales posteriormente cobraron popularidad y se desarrollo también para Windows, y lo conocemos como Winsock o Sockets de Windows

Sockets

Puntos de conexión, usualmente es un puerto escucha + una dirección I.P. luego viene el concepto de los clientes y el servidor o los servidores, bueno es todo lo básico que necesitas saber de los Sockets.

Chaski - Cliente/Servidor

Un programa cliente servidor consta de dos partes fundamentales Servidor, Cliente los cuales pueden estar desarrollados en cualquier lenguaje de programación, lo unico importante es que tienen que estar basados en cualquiera de los protocolos de de transmisión de datos, ya sea TCP/IP (Transmision Control Protocol) o UDP/IP (User Datagram Protocol)

En nuestro ejemplo ambos módulos fueron desarrollados en Delphi 7 - pero testeamos el ejemplo que tenemos en C++ Builder que está publicado aquí,... la conexión y el intercambio de datos no difiere en nada, esto no por que el compilador sea Pascal, también lo testeamos con un programa Visual C++, y otro en Win32 con Dev-C++ y todo Ok. esto por que los Windows Sockets son un estandar para todos los compiladores para Windows.

El Servidor : TServerSocket

Para el servidor usamos el componente TServerSocket, que esta en la paleta Internet en ambos IDEs tanto Delphi como C++ Builder, cabe destacar que este componente esta completamente desarrollado asi que no tienes que preocuparte por la cantidad de clientes que conecten a tu servidor el componente se encarga de administrarlos, no es como en C++ que tienes que crearte una Lista enlazada o un template de listas o punteros a sockets, aquí solo usamos los componentes y no necesitas preocuparte por los detalles.

Ahora observa como se tiene que inicializar el ServerSocket, para que comience a escuchar....
Code: Seleccionar todo
  1.  Procedure TuDlgMain.BtnCreateClick(Sender: TObject);

  2.  Begin

  3.  

  4.     // Aqui inicializamos el puerto escucha

  5.  

  6.     SockServer.Port := StrToInt( EdtPort.Text );

  7.     SockServer.Open();

  8.     // SockServer.Active = true;

  9.  

  10.  

  11.     // Dejamos sin usar los controles

  12.  

  13.     Self.EdtPort.Enabled   := False;

  14.     Self.BtnCreate.Enabled := False;

  15.  

  16.  End;



El Cliente : TClientSocket



Code: Seleccionar todo
  1.  Procedure TuDlgConect.BtnConectClick(Sender: TObject);

  2.  Begin

  3.  

  4.     // iniciar socket y luego conectar ....

  5.  

  6.     SockClient.Port := StrToInt( EdtPort.Text );

  7.     SockClient.Host := EdtHost.Text;

  8.     SockClient.Open( );

  9.  

  10.     // Active = true  ---> Connect( ..., ... );

  11.  

  12.  End;



Cuando ejecutes el programa cliente, el server ya tendra que esta iniciado, y al mostrarle la siguiente ventana, entonces es importantes que sepas la I.P. de la maquina en la que estas y si no lo sabes entonces deja los valores por defecto y click en Conectar.

Img01.jpg
Ventana de login para el chat


Notas de Interés

Si usas Delphi 7, Delphi 2003 o quiza tengas Borland Developer Studio de seguro que no encontraras con facilidad los componentes TServerSocket, TClientSocket esto por que no estan incluidos en la paleta y en su lugar estan TClientTCP, TServerTCP pero no te asustes pues puedes añadirlo siguiendo los siguientes pasos:

Click en Componenets -> Install Packages -> Add -> Buscar Sockets.bpl y listo.

Img02.jpg
Components -> Install Packages -> Add -> Buscar Sockets.bpl


Si no te funciona .... bueno, enviennos un E-mail a micrologic_software@yahoo.es y les daremos una solución alterna.

Otros Artículos en esta sección

¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:
foro de Programación »