quinta-feira, 24 de julho de 2014

Sockets em Delphi com Variáveis numéricas

Para fazer a comunicação (escrita e leitura) de variáveis que não são texto, devem ser usados os métodos



ReceiveBuf ao invés de ReceiveText
e

SendBuf ao invés de SendText



O exemplo a seguir é semelhante ao anterior, porém permite a comunicação enviando e recebendo um número inteiro.

O programa a seguir pode se comunicar com o servidor do exemplo desenvolvido em linguagem C para Linux.



unit UnCliente;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ScktComp, StdCtrls;

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ClientSocket1Read(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.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
showmessage('conectou');
end;

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.Button2Click(Sender: TObject);
begin
meunro:=strtointdef(Edit3.text,0);
ClientSocket1.Socket.SendBuf(meunro,sizeof(meunro));
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.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Socket.ReceiveBuf(nrorec,sizeof(nrorec));
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.FormCreate(Sender: TObject);
begin
button2.Enabled:=false;
end;

end.

Poste retirado do Blog: http://blogprogramadores.blogspot.com.br/2010/07/sockets-em-delphi.html

← Postagem mais recente Postagem mais antiga → Página inicial

0 comentários:

Postar um comentário