Conexión básica Cliente Servidor con Delphi 7
Usan los componentes TClientSocket y TServerSocket

Internet esta basado en un protocolo llamado Cliente - Servidor, donde los clientes son cada una de las máquinas que visitan otras páginas Web y los servidores son las máquinas que contienen las páginas Web.

Así mismo funciona una conexión cliente- servidor en la práctica usando Delphi 7. Vamos a ver como crear una conexión básica de este tipo implementado una simple aplicación que envia un mensaje a otra.

Vamos con la programación del cliente:

Agregamos un TClientSocket al formulario, un botón y un label, ahora nos vamos al evento OnCreate del formulario y añadimos el siguiente código:

[highlight=pascal]procedure TForm1.FormCreate(Sender: TObject);
begin
ClientSocket1.Host:= 'localhost';
ClientSocket1.Port:= 1234;
ClientSocket1.Active:= True;
end;[/highlight]

Host, hace referencia a la máquina a la que nos conectaremos y Port hace referencia al puerto que utilizaremos para conectarnos, luego le ponemos la propiedad active como True.

Ahora vamos al evento clic del botón y agregamos el siguiente código que es para enviar un mensaje:

[highlight=pascal]procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText('saludar');
end;[/highlight]

Listo es es todo, que fácil no? pero adicionalmente debemos agregar un control de errores por lo que seleccionamos nuestro TClientSocket y vamos a la propiedad OnError:

[highlight=pascal]procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode:= 0;
Label1.Caption:= 'Estado: Error';
end;[/highlight]

En caso de error el caption del label cambia a "Error". Y para el evento OnDisconnect:

[highlight=pascal]procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Label1.Caption:= 'Estado: Desconectado';
end;[/highlight]

Ahora el evento OnConnect:

[highlight=pascal]procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Label1.Caption:= 'Estado: Conectado';
end;[/highlight]

Ahora vamos con la programación del servidor:

Agregamos un TServerSocket y un Label al formulario y en el evento OnCreate del form ponemos lo siguiente, que es para activar el componente y dejarlo a la escucha.

[highlight=pascal]procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Active:= true;
end;[/highlight]

Bien, ¿recuerdan que desde el cliente enviábamos una cadena? pues ahora la recibiremos, y pondremos un condicional, si recibe esa cadena que muestre un mensaje:

[highlight=pascal]procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
If Socket.ReceiveText = 'saludar' then
ShowMessage('Te saludan desde el Cliente =)');
end;[/highlight]

Y listo ya lo demás son eventos del componente, como cuando se pone a la escucha en el evento OnListen:

[highlight=pascal]procedure TForm1.ServerSocket1Listen(Sender: TObject;
Socket: TCustomWinSocket);
begin
Label1.Caption:= 'Estado: Escuchando';
end;[/highlight]

O cuando se conecta:

[highlight=pascal]procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Label1.Caption:= 'Estado: Conectado';
end;[/highlight]

Ahora ejecutamos el servidor y luego el cliente y vean como les ha quedado. Eso ha sido todo por el momento, luego explicaré como realizar una conexión inversa usando estos mismos componentes.