Minggu, 16 November 2008

Pesan Sederhana Client-Server

  • Project Aplikasi Pesan Sederhana kali ini dengan menggunakan clientsocket, serversocket dan TCPserver/client Component di Tab internet Delphi. Di delphi 7 untuk memanggil komponennya (client/server socket) lakukanlah :
    Klik menu bar Component>Install Packages; pada Tab Packages dari Project Option pilih Add,look in drive:\Program File>Borland>Delphi7>bin kemudian pilih dclsockets70.bpl; klik Open sehingga muncul di List design Packages-Borland socket component (kondisi terpilih) kemudian OK. Lihat di Tab Internet.
  • Buatlah aplikasi menu utama pada form1 (gambar1) , selanjutnya :
    Form2 (gb2) untuk aplikasi pesan server (clientsocket komponen di Tab Internet);
    Form3 (gb3)untuk aplikasi pesan client (serversocket komponen di Tab Internet);
    Form4 (gb4)untuk aplikasi port (Tcpserver & Tcpclient komponen di Tab Internet);
    gbr.2 gbr.3










gbr.1

    gbr.4

    Tambahkan Main Menu komponen (di Tab Standard) pada menu utama (form1).

    Ketiga Form lainnya di link dari menu utama (form1). Untuk mencoba aplikasi yang telah dibuat pada PC yang sama digunakan alamat Local Host : 127.0.0.1; apabila dicoba pada jaringan LAN untuk 2 PC dapat digunakan alamat : 192.168.0.1 (server) dan 192.168.0.2 (client).

      Untuk List Program sbb:
      1. Menu Utama (Form1) :
      .........................
      implementation
      uses MMSystem, Unit2, Unit3, Unit4;


      {$R *.dfm}

      procedure TForm1.PRO1Click(Sender: TObject);
      begin
      close;
      end;

      procedure TForm1.SERVER1Click(Sender: TObject);
      begin
      form2.show;
      SNDPlaySound('ungu.wav',SND_ASYNC OR SND_FILENAME);
      end;

      procedure TForm1.CLIENT1Click(Sender: TObject);
      begin
      form3.show;
      end;

      procedure TForm1.CPserverclient1Click(Sender: TObject);
      begin
      form4.show;
      end;
      end.

          2. Form2
          ...............................
          implementation

          {$R *.dfm}

          procedure TForm2.FormCreate(Sender: TObject);
          begin
          ServerSocket1.Port:=50;
          end;

          procedure TForm2.BitBtn1Click(Sender: TObject);
          begin
          If (serversocket1.socket.ActiveConnections > 0) then
          serversocket1.socket.connections[0].SendText(Edit1.Text);

          end;

          procedure TForm2.ServerSocket1Accept(Sender: TObject;
          Socket: TCustomWinSocket);
          begin
          Memo2.Lines.Add('Accept dari'+Socket.RemoteHost);
          end;

          procedure TForm2.ServerSocket1Listen(Sender: TObject;
          Socket: TCustomWinSocket);
          begin
          Memo2.Lines.Add('Listen di'+Socket.LocalHost);
          end;

          procedure TForm2.ServerSocket1ClientError(Sender: TObject;
          Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
          var ErrorCode: Integer);
          begin
          Memo2.Lines.Add('Error'+IntToStr(ErrorCode));
          end;

          procedure TForm2.ServerSocket1ClientRead(Sender: TObject;
          Socket: TCustomWinSocket);
          begin
          Memo2.lines.Add('ClientRead"'+Socket.ReceiveText+'"');
          end;

          procedure TForm2.ServerSocket1ClientConnect(Sender: TObject;
          Socket: TCustomWinSocket);
          begin
          Memo1.Lines.Add('Connected:'+socket.RemoteHost+'('+socket.RemoteAddress+')');
          end;

          procedure TForm2.ServerSocket1ClientDisconnect(Sender: TObject;
          Socket: TCustomWinSocket);
          begin
          Memo1.Lines.Add('DisConnected:'+socket.RemoteHost+'('+socket.RemoteAddress+')');
          end;

          end.

          3. Form3
          ..........................
          implementation

          {$R *.dfm}

          procedure TForm3.BitBtn1Click(Sender: TObject);
          begin
          If(clientsocket1.socket.connected) then
          clientsocket1.socket.sendText(Edit2.Text);

          end;

          procedure TForm3.ClientSocket1Connect(Sender: TObject;
          Socket: TCustomWinSocket);
          begin
          Memo1.Lines.Add('Connect ke'+Socket.RemoteHost);
          end;

          procedure TForm3.ClientSocket1Error(Sender: TObject;
          Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
          var ErrorCode: Integer);
          begin
          Memo1.Lines.Add('Error'+intToStr(Errorcode));
          end;

          procedure TForm3.ClientSocket1Read(Sender: TObject;
          Socket: TCustomWinSocket);
          begin
          Memo1.Lines.Add('Read"'+Socket.ReceiveText+'"');
          end;

          procedure TForm3.CheckBox1Click(Sender: TObject);
          begin
          if not clientsocket1.active then
          clientsocket1.address:=edit1.Text;
          clientsocket1.active:=checkBox1.checked;

          end;

          end.

          4. Form4

          unit Unit4;

          interface

          uses
          Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
          Dialogs, StdCtrls, Buttons, Sockets, ExtCtrls;

          type
          TForm4 = class(TForm)
          Panel1: TPanel;
          TcpServer1: TTcpServer;
          TcpClient1: TTcpClient;
          Edit1: TEdit;
          Label1: TLabel;
          Edit2: TEdit;
          Label2: TLabel;
          Edit3: TEdit;
          Label3: TLabel;
          BitBtn1: TBitBtn;
          memreceive: TMemo;
          Label4: TLabel;
          Label5: TLabel;
          Panel2: TPanel;
          BitBtn2: TBitBtn;
          memsend: TMemo;
          BitBtn3: TBitBtn;
          procedure BitBtn1Click(Sender: TObject);
          procedure BitBtn2Click(Sender: TObject);
          procedure TcpServer1Accept(Sender: TObject;
          ClientSocket: TCustomIpClient);
          procedure FormCreate(Sender: TObject);
          private
          { Private declarations }
          public
          { Public declarations }
          end;
          // you must create your own thread to synch
          // writing to a gui component
          TClientDataThread = class(TThread)
          private
          public
          ListBuffer :TStringList;
          TargetList :TStrings;
          procedure synchAddDataToControl;
          constructor Create(CreateSuspended: Boolean);
          procedure Execute; override;
          procedure Terminate;
          end;

          var
          Form4: TForm4;
          //DataThread: TClientDataThread;
          implementation

          {$R *.dfm}
          //------------- TClientDataThread impl -----------------------------------------
          constructor TClientDataThread.Create(CreateSuspended: Boolean);
          begin
          inherited Create(CreateSuspended);
          FreeOnTerminate := true;
          ListBuffer := TStringList.Create;
          end;

          procedure TClientDataThread.Terminate;
          begin
          ListBuffer.Free;
          inherited;
          end;

          procedure TClientDataThread.Execute;
          begin
          Synchronize(synchAddDataToControl);
          end;

          procedure TClientDataThread.synchAddDataToControl;
          begin
          TargetList.AddStrings(ListBuffer);
          end;
          //------------- end TClientDataThread impl -------------------------------------




          procedure TForm4.BitBtn1Click(Sender: TObject);
          begin
          TcpServer1.LocalPort := edit3.Text;
          TcpServer1.Active := True;

          end;

          procedure TForm4.BitBtn2Click(Sender: TObject);
          var
          I: Integer;

          begin
          TcpClient1.RemoteHost := edit1.Text;
          TcpClient1.RemotePort := edit2.Text;
          try
          if TcpClient1.Connect then
          for I := 0 to memsend.Lines.Count - 1 do
          TcpClient1.Sendln(memsend.Lines[I]);
          finally
          TcpClient1.Disconnect;

          end;

          end;

          procedure TForm4.TcpServer1Accept(Sender: TObject;
          ClientSocket: TCustomIpClient);
          var
          s: string;
          DataThread: TClientDataThread;

          begin
          // create thread
          DataThread:= TClientDataThread.Create(true);
          // set the TagetList to the gui list that you
          // with to synch with.
          DataThread.TargetList := memreceive.lines;

          // Load the Threads ListBuffer
          DataThread.ListBuffer.Add('*** Koneksi diterima ***');
          DataThread.ListBuffer.Add('Remote Host: ' + ClientSocket.LookupHostName(ClientSocket.RemoteHost) +
          ' (' + ClientSocket.RemoteHost + ')');
          DataThread.ListBuffer.Add('===== Awal PesaN =====');
          s := ClientSocket.Receiveln;
          while s <> '' do
          begin
          DataThread.ListBuffer.Add(s);
          s := ClientSocket.Receiveln;
          end;
          DataThread.ListBuffer.Add('===== Akhir Pesan =====');

          // Call Resume which will execute and synch the
          // ListBuffer with the TargetList
          DataThread.Resume;

          end;
          end.


          Jangan lupa untuk properties dan eventnya :




            Let's go to RUN program..........











































































































                                          Sabtu, 01 November 2008

                                          Video Capture dengan Delphi

                                          Membuat aplikasi video capture dengan Delphi pada tutorial kali ini menggunakan component tsCap32 versi 3.1 dari Thomas Stüfe yang anda bisa download di alamat: http://tscap32.sourceforge.net/download.html. Web Camera yang digunakan bisa merek apa saja.
                                          Pada saat uji coba aplikasi saya menggunakan:

                                          • Delphi 7.0
                                          • Web Camera merek Creative (Creative WebCam Vista) dengan spesifikasi:
                                            · 640x480 (VGA) sensor
                                            · Video capture 800 x 600 resolution
                                            · Quick, easy USB connection
                                            · Manual focus lens

                                            Langkah pembuatan aplikasi:

                                          • So Pasti PC telah terinstal driver webCam dan Delphi 7.
                                            Install component tscap32 dengan cara ekstrak dulu folder tscap32_delphi7_release kemudian install component tscap32.dpk sehingga muncul di Tab Pallete Component Delphi (Tab tsTech beserta komponennya)

                                          • Buatlah form aplikasi delphi dengan komponen sbb:


                                          List Program Lengkapnya sbb:

                                          unit Unit1;

                                          interface

                                          uses
                                          Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
                                          Dialogs, tscap32_rt, Menus, ExtCtrls, StdCtrls, Buttons;

                                          type
                                          TForm1 = class(TForm)
                                          tsCap321: TtsCap32;
                                          tsCap32PopupMenu1: TtsCap32PopupMenu;
                                          tsCap32Dialogs1: TtsCap32Dialogs;
                                          CheckBox1: TCheckBox;
                                          BitBtn1: TBitBtn;
                                          BitBtn2: TBitBtn;
                                          BitBtn3: TBitBtn;
                                          procedure CheckBox1Click(Sender: TObject);
                                          procedure BitBtn1Click(Sender: TObject);
                                          procedure BitBtn2Click(Sender: TObject);
                                          procedure BitBtn3Click(Sender: TObject);
                                          private
                                          { Private declarations }
                                          public
                                          { Public declarations }
                                          end;

                                          var
                                          Form1: TForm1;

                                          implementation

                                          {$R *.dfm}

                                          procedure TForm1.CheckBox1Click(Sender: TObject);
                                          begin
                                          If checkBox1.Checked then
                                          begin
                                          tscap321.Connected:=true; //kondisi terhubung
                                          //ke WebCam
                                          end
                                          else
                                          tscap321.Connected:=false; //kondisi tidak terhubung
                                          end;

                                          procedure TForm1.BitBtn1Click(Sender: TObject);
                                          begin
                                          showMessage('simpan di c:\test.bmp');
                                          tscap321.SaveAsBMP:='c:\test.bmp'; //capture disimpan di drive C
                                          //dengan nama file 'tes.bmp'

                                          end;

                                          procedure TForm1.BitBtn2Click(Sender: TObject);
                                          begin
                                          tscap321.CapOrder:=start;
                                          end;

                                          procedure TForm1.BitBtn3Click(Sender: TObject);
                                          begin
                                          tscap321.CapOrder:=stop;
                                          end;

                                          end.

                                          • Jangan lupa Copy Paste file dcu dan frm dari folder tsCap32_delphi7_release (hasil exctract) ke Folder Project Delphi anda, yaitu :TsCap32_rt.dcu;Tstlg.dcu;VfwUnit.dcu;tsDibrel.dcu;tsMessages.dcu; serta folder tsCap32FormResources
                                          • Lihat hasil image capture di drive c:\test.bmp serta video capturnya (File AVI) pada drive yang sama.

                                            Kemudian Run program.....Selamat mencoba.