// Projeto: Exemplo de Cliente Socket para simular um
Gerenciador de Banco de Dados
// Descrição: O Cliente envia uma solicitação para o
Servidor, que pode ser
// : de
listar, incluir o excluir strings em uma lista
// Desenvolvedor: Alberto Henrique Sousa
// Faculdade: Facthus - Talentos Humanos
// Curso: Sistemas de Informação
// Disciplinas: Redes de Computadores II
// Professor: Diovani Milhorim
// Data: 23/08/2007
unit PrincClient;
interface
uses
Windows, Messages, SysUtils, Variants,
Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls, ExtCtrls;
type
TFormPrincipal = class(TForm)
ClientSocket1: TClientSocket; // Componente Cliente Socket
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Panel2: TPanel;
Label3: TLabel;
EdComando: TEdit;
Panel3: TPanel;
Button2: TButton;
Log: TMemo;
GroupBox1: TGroupBox;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
procedure Button1Click(Sender: TObject);
procedure ClientSocket1Read(Sender:
TObject; Socket: TCustomWinSocket);
procedure Button2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Panel2Resize(Sender: TObject);
procedure ClientSocket1Connect(Sender:
TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Disconnect(Sender:
TObject;
Socket: TCustomWinSocket);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
Connected: Boolean;
procedure Status;
procedure MsgLog(S: String);
public
{ Public declarations }
end;
var
FormPrincipal: TFormPrincipal;
implementation
{$R *.dfm}
procedure
TFormPrincipal.Button1Click(Sender: TObject);
begin
if not Connected then
begin
ClientSocket1.Host
:= Edit1.text; // Define o Host de
conexão
ClientSocket1.port
:= StrToIntdef(Edit2.text, 0); // Define a porta de conexão
end;
ClientSocket1.Active
:= not Connected;
Status;
end;
procedure TFormPrincipal.ClientSocket1Read(Sender: TObject;
Socket:
TCustomWinSocket);
begin
// O Método
"ClientRead" faz a leitura da mensagem enviada pelo servidor através
// da propriedade
"ReceiveText" do componente "TCustomWinSocket".
MsgLog('Resposta: '
+ Socket.ReceiveText);
end;
procedure TFormPrincipal.Button2Click(Sender: TObject);
begin
if
Trim(EdComando.Text) <> '' then
ClientSocket1.Socket.SendText(EdComando.text); // Envia a mensagem para
o servidor
end;
// a mensagem será interpretada pelo servidor
procedure TFormPrincipal.Status;
begin
if Connected
then // Status do Servidor
begin
Button1.Caption :=
'Stop';
MsgLog('Servidor
Conectado...');
end
else
begin
Button1.Caption :=
'Start';
MsgLog('Servidor
Desconectado...');
end;
end;
procedure TFormPrincipal.MsgLog(S: String);
begin
Log.Lines.Add(S);
Application.ProcessMessages;
end;
procedure TFormPrincipal.FormShow(Sender: TObject);
begin
Button1Click(Self);
end;
procedure TFormPrincipal.Panel2Resize(Sender: TObject);
begin
EdComando.Width :=
Panel2.Width - 142;
end;
procedure TFormPrincipal.ClientSocket1Connect(Sender:
TObject;
Socket:
TCustomWinSocket);
begin
Connected := True;
Button2.Enabled :=
True;
Status;
end;
procedure TFormPrincipal.ClientSocket1Disconnect(Sender:
TObject;
Socket:
TCustomWinSocket);
begin
Connected := False;
Button2.Enabled :=
False;
Status;
end;
procedure TFormPrincipal.FormCreate(Sender: TObject);
begin
Connected := False;
end;
end.