Servidor
Para programar um servidor com sockets em Delphi, crie uma nova aplicação e inclua um componente SERVERSOCKET que está na palheta INTERNET. Configure a porta de comunicação (PORT) e defina ACTIVE como true.
Para fazer o envio de uma mensagem utilize:
ServerSocket1.Socket.Connections[0].SendText( texto a ser enviado );
Para receber uma mensagem utilize o evento onClientRead
Cliente
Para programar um cliente com sockets em Delphi, crie uma nova aplicação e inclua um componente CLIENTSOCKET que está na palheta INTERNET. Configure o servidor através do endereço (ADDRESS) ou o nome do servidor (HOST), a porta de comunicação (PORT) e defina ACTIVE como true.
Para fazer o envio de uma mensagem utilize:
ClientSocket1.Socket.SendText( texto a ser enviado );
Para receber uma mensagem utilize o evento onClientRead
Propriedades do ServerSocket:
Port = 3100
ServerType = stNonBlocking
Active = True
unit UnServidor;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ScktComp, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Button1: TButton;
ServerSocket1: TServerSocket;
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure Button1Click(Sender: TObject);
procedure ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
meunro, nrorec: integer;
implementation
{$R *.DFM}
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
nrorec:= strtointdef(Socket.ReceiveText,0);
if meunro > 0 then
begin
if (nrorec + meunro) mod 2 = 0 then
begin
showmessage('Seu Nro: ' + inttostr(meunro) + ' Nro Recebido: '+ inttostr(nrorec) + ' VOCÊ GANHOU!');
end
else
begin
showmessage('Seu Nro: ' + inttostr(meunro) + ' Nro Recebido: '+ inttostr(nrorec) + ' VOCÊ PERDEU!');
end;
nrorec:=0;
meunro:=0;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
meunro:=strtointdef(Edit1.text,0);
ServerSocket1.Socket.Connections[0].SendText(Edit1.text);
if nrorec>0 then
begin
if (nrorec + meunro) mod 2 = 0 then
begin
showmessage('Seu Nro: ' + inttostr(meunro) + ' Nro Recebido: '+ inttostr(nrorec) + ' VOCÊ GANHOU!');
end
else
begin
showmessage('Seu Nro: ' + inttostr(meunro) + ' Nro Recebido: '+ inttostr(nrorec) + ' VOCÊ PERDEU!');
end;
nrorec:=0;
meunro:=0;
end;
end;
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
showmessage('Cliente conectou!');
Button1.Enabled:=true;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Enabled:=false;
end;
end.
unit UnCliente; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ScktComp; type TForm1 = class(TForm) ClientSocket1: TClientSocket; Label1: TLabel; Label2: TLabel; Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; Label3: TLabel; Edit3: TEdit; Label4: TLabel; procedure Button1Click(Sender: TObject); procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); procedure Button2Click(Sender: TObject); procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; meunro, nrorec: integer; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin ClientSocket1.Host:=edit1.text; ClientSocket1.port:=strtointdef(edit2.text,0); ClientSocket1.Active:=true; Button2.Enabled:=true; end; procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); begin nrorec:= strtointdef(Socket.ReceiveText,0); if meunro > 0 then begin if (nrorec + meunro) mod 2 <> 0 then begin showmessage('Seu Nro: ' + inttostr(meunro) + ' Nro Recebido: '+ inttostr(nrorec) + ' VOCÊ GANHOU!'); end else begin showmessage('Seu Nro: ' + inttostr(meunro) + ' Nro Recebido: '+ inttostr(nrorec) + ' VOCÊ PERDEU!'); end; nrorec:=0; meunro:=0; end; end; procedure TForm1.Button2Click(Sender: TObject); begin meunro:=strtointdef(Edit3.text,0); ClientSocket1.Socket.SendText(Edit3.text); if nrorec>0 then begin if (nrorec + meunro) mod 2 <> 0 then begin showmessage('Seu Nro: ' + inttostr(meunro) + ' Nro Recebido: '+ inttostr(nrorec) + ' VOCÊ GANHOU!'); end else begin showmessage('Seu Nro: ' + inttostr(meunro) + ' Nro Recebido: '+ inttostr(nrorec) + ' VOCÊ PERDEU!'); end; nrorec:=0; meunro:=0; end; end; procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); begin showmessage('Conectado!'); end; procedure TForm1.FormCreate(Sender: TObject); begin button2.Enabled:=false; end; end.Poste retirado do Blog: http://blogprogramadores.blogspot.com.br/2010/07/sockets-em-delphi.html
0 comentários:
Postar um comentário