praktikum tugas 1 perancangan program client dengan port 32 · laporan praktikum matakuliah ......

41
Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 1 dari 40 Praktikum Tugas 1 Perancangan Program Client dengan P ort 32 Form dari pada client adalah sebagai berikut : Jika server belum aktif maka tampil : Progamnya adalah : Tampilan dalam posisi terhubung dengan server, dengan pesan angka dari scrollbar senilai 46. Jika Server sudah Aktif maka tampilannya adalah : Input data Numerik melalui Scrolbar Input data String melalui Edit text Mengirim data melalui cekbox Bentuk shortcat dari pada socket Default status adalah Not Connection to Serverif checkbox1.Checked=false then begin label6.Caption:='Port '+inttostr(clientsocket1.port)+' Off'; edit3.Text:='Not Connect to Server'; end;

Upload: lythu

Post on 24-Mar-2019

241 views

Category:

Documents


0 download

TRANSCRIPT

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 1 dari 40

Praktikum Tugas 1 Perancangan Program Client

dengan Port 32 Form dari pada client adalah sebagai berikut :

Jika server belum aktif maka tampil :

Progamnya adalah :

Tampilan dalam posisi terhubung dengan server, dengan pesan angka dari scrollbar senilai 46.

Jika Server sudah Aktif maka tampilannya adalah :

Input data Numerik melalui Scrolbar

Input data String melalui Edit text

Mengirim data melalui

cekbox

Bentuk shortcat dari pada socket

Default status adalah “Not Connection to

Server”

if checkbox1.Checked=false then

begin label6.Caption:='Port '+inttostr(clientsocket1.port)+' Off'; edit3.Text:='Not Connect to Server'; end;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 2 dari 40

Properties adalah sebagai berikut :

Keterangan :

Socket yang digunakan adalah Port 32, karena localhost Port 80 untuk HTTP (Hyper Text Transfer Protocol) Port 21 untuk FTP (File Transfer Protocol) Port 25 untuk SMPT (Simple Mail Transfer Protocol) Port 110 untuk POP3 (Post Protocol Versi 3) Port 23 untuk Telnet Port 50 untuk Wifi

Cara untuk mengaktifkan Conection ke Server melalui port 32 adalah :

Adapun data yang dikirim ke server melalui 2 cara, yaitu : 1. Cara numeric yang dirobah ke string dari scrollbar 2. Cara input data melalui text edit

Adapun logikanya adalah seperti berikut :

if label4.caption='' then

socket.SendText(edit1.text); else

socket.SendText(inttostr(scrollbar1.position))

clientsocket1.active:=True;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 3 dari 40

Program client secara lengkap adalah sebagai berikut :

Bersambung…….

procedure TForm1.CheckBox2Click(Sender: TObject);

begin if checkbox1.Checked=false then begin label6.Caption:='Port '+inttostr(clientsocket1.port)+' Off'; label7.Caption:='IP...: '+edit2.Text; label8.Caption:='Host.: '+clientsocket1.host; edit3.Text:='Not Connect to Server'; clientsocket1.Active:=false ; scrollbar1.Enabled:=true; edit1.enabled:=true; edit2.Enabled:=true; checkbox1.Caption:='Kirim' ; end;

if checkbox1.Checked=true then begin label7.Caption:='IP...: '+edit2.Text; label8.Caption:='Host.: '+clientsocket1.host; label6.Caption:='Port '+inttostr(clientsocket1.port)+' On'; edit3.Text:='Connect'; clientsocket1.Active:=true ; checkbox1.Caption:='Ready' ; scrollbar1.Enabled:=false; edit1.enabled:=false; edit2.Enabled:=false; end; end;

procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); begin Status:=socket.ReceiveText; edit3.Text:=Status; if Status= 'KIRIM' then if label4.caption='' then begin socket.SendText(edit1.text); end else socket.SendText(inttostr(scrollbar1.position)) end;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 4 dari 40

Bersambung. …….

unit Uclient1;

interface uses Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms, Dialogs, StdCtrls, ScktComp, ExtCtrls,

jpeg, Grids, ValEdit; type TForm1 = class(TForm) Image1: TImage; Panel1: TPanel; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Edit2: TEdit; Edit3: TEdit; CheckBox1: TCheckBox; Edit1: TEdit; ScrollBar1: TScrollBar; ClientSocket1: TClientSocket; Button1: TButton; Label6: TLabel; Label7: TLabel; Label8: TLabel; CheckBox2: TCheckBox; procedure CheckBox2Click(Sender: TObject); procedure ClientSocket1Read(Sender: TObject;

Socket: TCustomWinSocket); procedure ClientSocket1Connecting(Sender: TObject;

Socket: TCustomWinSocket); procedure ScrollBar1Change(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Edit1Change(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Status:string; implementation {$R *.dfm}

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 5 dari 40

procedure TForm1.ClientSocket1Connecting(Sender: TObject; Socket: TCustomWinSocket); begin {Status:=socket.ReceiveText; edit3.Text:=Status; Socket.SendText(edit1.text);} end;

procedure TForm1.ScrollBar1Change(Sender: TObject); begin label4.Caption:=inttostr(scrollbar1.position); edit1.enabled:=false; end;

procedure TForm1.Button1Click(Sender: TObject); begin

close; checkbox2.Checked:=False; checkbox1.Checked:=False; clientsocket1.active:=false; end;

procedure TForm1.Edit1Change(Sender: TObject); begin scrollbar1.Enabled:=false; end;

procedure TForm1.FormCreate(Sender: TObject); begin if clientsocket1.active=false then begin checkbox2.Checked:=false; label6.Caption:='SERVER BELUM AKTIF'; edit3.Text:='Server belum aktive'; checkbox2.Checked:=False; end; if clientsocket1.active=True then begin checkbox2.Checked:=true; label6.Caption:='SERVER AKTIF';

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 6 dari 40

Perancangan Program Server dengan Port 32

Untuk sebagai pembuktian dari pada berhasilnya program client diatas dengan menggunakan port 32, maka akan dibuat program connection server. Namun dalam hal ini hanya sebagai pembuktian, untuk penjelasan selanjutnya akan dibahas pada Tugas berukutnya.

Adapun form dari pada server diatas adalah sebagai berikut :

Dikatakan server dikarenakan pada form ini terdapat fasilitas socket server, adapun property dari socket server adalah :

Pada server harus ditetntukan kode kode kesalahan pesan, adapu kesalahan pesan yang dikodekan adalah :

Pesan yang terkirim

Port yang menghubungi

Socket Server

procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin

pesan:=socket.ReceiveText; edit1.Text:=pesan; if pesan = '0' then

edit3.Text:= 'UNDERLIMIT' else if pesan= '128' then

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 7 dari 40

Sebagai Responding, jika client tidak ada yang menghubungi maka harus di definisikan seperti sebagai berikut :

Adapun Program Selengkapnya adalah sebagai berikut :

Bersambung…….

edit3.Text:= 'DEFAULT' else if pesan= '255' then

edit3.Text:= 'UPPERLIMIT' else

edit3.Text:= 'UNKNOWN'; serversocket1.Socket.Connections[0].SendText('KIRIM'); end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);

begin edit2.Text:='OFF'; end;

unit Userver1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ScktComp, ExtCtrls; type TForm1 = class(TForm) Panel1: TPanel; ServerSocket1: TServerSocket; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Button1: TButton; Label4: TLabel; procedure ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); procedure Button1Click(Sender: TObject); procedure ServerSocket1Accept(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public { Public declarations } end;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 8 dari 40

var Form1: TForm1; pesan:string; implementation {$R *.dfm}

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin

edit1.Text:= serversocket1.Socket.Connections[0].RemoteAddress; edit2.Text:='ON'; serversocket1.Socket.Connections[0].SendText('KIRIM');

end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin

pesan:=socket.ReceiveText; edit1.Text:=pesan; if pesan = '0' then

edit3.Text:= 'UNDERLIMIT' else if pesan= '128' then

edit3.Text:= 'DEFAULT' else if pesan= '255' then

edit3.Text:= 'UPPERLIMIT' else

edit3.Text:= 'UNKNOWN'; serversocket1.Socket.Connections[0].SendText('KIRIM'); end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin

edit2.Text:='OFF'; end;

procedure TForm1.Button1Click(Sender: TObject); begin

CLOSE; end;

procedure TForm1.ServerSocket1Accept(Sender: TObject; Socket: TCustomWinSocket); begin end; end.

Text yang dikirim ke client jika telah

terkoneksi, dan pengiriman

berhasil

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 9 dari 40

Tampilan Jika dihubungkan dengan mengaktifkan form client dan server, dengan mengirim text melalui Text Edit.

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 10 dari 40

Praktikum Tugas 2 Perancangan Program Chatting

dengan Port 50

PROGRAM CLIENT Pada chatting perlu dibuat program clien yang perinsipnya sama dengan program diatas, namun dalam hal ini akan menggunakan port 50, form pada clinet adalah sebagai berikut :

Untuk Mengaktifkan conection ke server maka progamnya adalah sebagai berikut :

Text yang dikirim adalah berada pada Edit text pada panel pesan, dimana programnya adalah sebagai berikut :

procedure TForm1.CheckBox1Click(Sender: TObject);

begin if not ClientSocket1.Active then ClientSocket1.Address := Edit1.Text; ClientSocket1.Active := CheckBox1.Checked; end;

procedure TForm1.Button1Click(Sender: TObject);

begin ClientSocket1.Socket.SendText(Edit2.Text); end;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 11 dari 40

Program secara lengkap adalah sebagai berikut :

Bersambung….

unit Unit1;

interface

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

type TForm1 = class(TForm) Panel1: TPanel; Panel2: TPanel; Edit1: TEdit; Edit2: TEdit; Button1: TButton; Label1: TLabel; Label2: TLabel; CheckBox1: TCheckBox; ClientSocket1: TClientSocket; Button2: TButton; Label3: TLabel; procedure Button1Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Edit2Change(Sender: TObject); private { Private declarations } public { Public declarations } end;

var Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject); begin ClientSocket1.Socket.SendText(Edit2.Text); end;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 12 dari 40

Tampilan dari Program tersebut adalah sebagai berikut :

procedure TForm1.CheckBox1Click(Sender: TObject);

begin if not ClientSocket1.Active then ClientSocket1.Address := Edit1.Text; ClientSocket1.Active := CheckBox1.Checked; end;

procedure TForm1.FormActivate(Sender: TObject); begin Edit1.Clear; Edit2.Clear; end;

procedure TForm1.Button2Click(Sender: TObject); begin CLOSE; end;

procedure TForm1.Edit2Change(Sender: TObject); begin

end;

end.

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 13 dari 40

Perancangan Program Chatting dengan Port 50

PROGRAM SERVER Pada program server catting ini kita harus banyak membuat fasilitas antara lain :

Seedbutton:

Spedbutton berfungsi untuk menghubungkan ke client secara terus menerus, dan menerima connection dari client yang menghubungi server secara otomatis dilayani. Dan menerima informasi serta memasukkannya ke dalam item memo, setiap aktifitas yang dilakukan karena bertindak sebagai host.

Adapun bentuk speedbutton adalah sebagai berikut :

Listing program yang ada didalam speedbutton adalah :

Speedbutton

procedure TChatForm.FileConnectItemClick(Sender: TObject);

begin if ClientSocket.Active then ClientSocket.Active := False; if InputQuery('Computer to connect to', 'Address Name:', Server) then if Length(Server) > 0 then with ClientSocket do begin Host := Server; Active := True; FileListenItem.Checked := False; end; end;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 14 dari 40

Socket Client Socket client disini berfungsi untuk mengetahui aktifitas dari host lain dan akan dimasukkan ke dalam item memo sebagai query, adapun property dari item socket ini adalah sebagai berikut :

Dan listing programnya adalah sebagai berikut :

procedure TChatForm.ClientSocketConnect(Sender: TObject;

Socket: TCustomWinSocket); begin Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteHost; end;

procedure TChatForm.ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket); begin Memo2.Lines.Add(Socket.ReceiveText); end;

procedure TChatForm.ClientSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin FileListenItemClick(nil); end;

procedure TChatForm.ClientSocketError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin Memo2.Lines.Add('Error connecting to : ' + Server); ErrorCode := 0; end;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 15 dari 40

Socket Server Server socket disini adalah untuk melalani kegiatan dari pada client dan akan dimasukkan ke dalam memo sebagai query. Adapun property dari pada server socket ini adalah sebagai berikut :

Dan programnya adalah sebagai berikut :

procedure TChatForm.ServerSocketClientRead(Sender: TObject;

Socket: TCustomWinSocket); begin Memo2.Lines.Add(Socket.ReceiveText); end;

procedure TChatForm.ServerSocketAccept(Sender: TObject; Socket: TCustomWinSocket); begin IsServer := True; Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteAddress; end;

procedure TChatForm.ServerSocketClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin Memo2.Lines.Clear; end;

procedure TChatForm.ServerSocketClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin Statusbar1.Panels[0].Text := 'Listening...'; end;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 16 dari 40

Main menu Main menu dalam program ini berfungsi sebagai control dari hubungan dan aktifitas dari pada client yang melakukan chatting, pada main menu ini terdapat beberapa fasilitas seperti Tampilkan

Untuk menampilkan data yang melakukan chating pada query server sebagai host.

Programnya adalah sebagai berikut :

Hubungkan

Untuk melakukan connection dengan beberapa client yang akan melakukan,sehingga client dapat berfungsi sebagai chatting.

Programnya adalah sebagai berikut :

procedure TChatForm.FileListenItemClick(Sender: TObject);

begin FileListenItem.Checked := not FileListenItem.Checked; if FileListenItem.Checked then begin ClientSocket.Active := False; ServerSocket.Active := True; Statusbar1.Panels[0].Text := 'Listening...'; end else begin if ServerSocket.Active then

ServerSocket.Active := False; Statusbar1.Panels[0].Text := ''; end; end;

procedure TChatForm.FileConnectItemClick(Sender: TObject);

begin if ClientSocket.Active then ClientSocket.Active := False; if InputQuery('Computer to connect to', 'Address Name:', Server) then if Length(Server) > 0 then with ClientSocket do begin Host := Server; Active := True; FileListenItem.Checked := False; end; end;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 17 dari 40

Putuskan Hubungan

Untuk melakukan memutuskan connection dengan beberapa client yang akan melakukan,sehingga client tidak dapat berfungsi sebagai chatting.

Programnya adalah sebagai berikut :

Keluar

Untuk keluar dari pada main menu, sehingga form aktifitas host tidak berfungsi lagi

Programnya adalah sebagai berikut :

Adapun menu dari pada main menu ini adalah sebagai berikut :

Dan property dari main menu adalah :

procedure TChatForm.Disconnect1Click(Sender: TObject); begin ClientSocket.Active := False; ServerSocket.Active := True; Statusbar1.Panels[0].Text := 'Listening...'; end;

procedure TChatForm.Exit1Click(Sender: TObject);

begin Application.Restore; ServerSocket.Close; ClientSocket.Close;

Close; end;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 18 dari 40

Memo

Memo berfungsi untuk mencatat berbagai aktifitas chatting, dan memo server berfungsi untuk mencatat aktifitas client, sedangkan memo client berfungsi untuk mencatat client yang terkoneksi.

Adapun property dari memo server adalah sebagai berikut :

Form dari Server adalah sebagai berikut :

Memo Client

Memo Server

Main Menu

Socket Server

Socket Client

Speedbutton

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 19 dari 40

Listing Program lengkap adalah :

Bersambung…..

unit main;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, Buttons, ScktComp, ExtCtrls, ComCtrls;

type TChatForm = class(TForm) MainMenu1: TMainMenu; File1: TMenuItem; Exit1: TMenuItem; FileConnectItem: TMenuItem; FileListenItem: TMenuItem; StatusBar1: TStatusBar; Bevel1: TBevel; Panel1: TPanel; Memo1: TMemo; Memo2: TMemo; N1: TMenuItem; SpeedButton1: TSpeedButton; Disconnect1: TMenuItem; ServerSocket: TServerSocket; ClientSocket: TClientSocket; Button1: TButton; procedure FileListenItemClick(Sender: TObject); procedure FileConnectItemClick(Sender: TObject);

procedure Exit1Click(Sender: TObject); procedure Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormCreate(Sender: TObject); procedure ServerSocketError(Sender: TObject; Number: Smallint; var Description: string; Scode: Integer; const Source, HelpFile: string; HelpContext: Integer; var CancelDisplay: Wordbool); procedure Disconnect1Click(Sender: TObject); procedure ClientSocketConnect(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocketAccept(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocketClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocketError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); procedure ServerSocketClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); procedure Button1Click(Sender: TObject); procedure Memo1Change(Sender: TObject);

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 20 dari 40

Bersambung…..

procedure Memo2Change(Sender: TObject);

protected IsServer: Boolean; end; var ChatForm: TChatForm; Server: String; implementation {$R *.DFM} procedure TChatForm.FileListenItemClick(Sender: TObject); begin FileListenItem.Checked := not FileListenItem.Checked; if FileListenItem.Checked then begin ClientSocket.Active := False; ServerSocket.Active := True; Statusbar1.Panels[0].Text := 'Listening...'; end else begin if ServerSocket.Active then ServerSocket.Active := False; Statusbar1.Panels[0].Text := ''; end; end; procedure TChatForm.FileConnectItemClick(Sender: TObject); begin if ClientSocket.Active then ClientSocket.Active := False; if InputQuery('Computer to connect to', 'Address Name:', Server) then if Length(Server) > 0 then with ClientSocket do begin Host := Server; Active := True; FileListenItem.Checked := False; end; end; procedure TChatForm.Exit1Click(Sender: TObject); begin Application.Restore; ServerSocket.Close; ClientSocket.Close; Close; end; procedure TChatForm.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_Return then if IsServer then

ServerSocket.Socket.Connections[0].SendText(Memo1.Lines[Memo1.Lines.Count - 1])

else ClientSocket.Socket.SendText(Memo1.Lines[Memo1.Lines.Count - 1]);

end;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 21 dari 40

Bersambung……….

procedure TChatForm.FormCreate(Sender: TObject);

begin FileListenItemClick(nil); end; procedure TChatForm.ServerSocketError(Sender: TObject; Number: Smallint; var Description: string; Scode: Integer; const Source, HelpFile: string; HelpContext: Integer; var CancelDisplay: Wordbool); begin ShowMessage(Description); end; procedure TChatForm.Disconnect1Click(Sender: TObject); begin ClientSocket.Active := False; ServerSocket.Active := True; Statusbar1.Panels[0].Text := 'Listening...'; end; procedure TChatForm.ClientSocketConnect(Sender: TObject; Socket: TCustomWinSocket); begin Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteHost; end; procedure TChatForm.ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket); begin Memo2.Lines.Add(Socket.ReceiveText); end; procedure TChatForm.ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket); begin Memo2.Lines.Add(Socket.ReceiveText); end; procedure TChatForm.ServerSocketAccept(Sender: TObject; Socket: TCustomWinSocket); begin IsServer := True; Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteAddress; end; procedure TChatForm.ServerSocketClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin Memo2.Lines.Clear; end; procedure TChatForm.ClientSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin FileListenItemClick(nil); end; procedure TChatForm.ClientSocketError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin Memo2.Lines.Add('Error connecting to : ' + Server); ErrorCode := 0; end;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 22 dari 40

Tampilan dari pada Server Chatting adalah sebagai berikut :

procedure TChatForm.ServerSocketClientDisconnect(Sender: TObject;

Socket: TCustomWinSocket); begin Statusbar1.Panels[0].Text := 'Listening...'; end;

procedure TChatForm.Button1Click(Sender: TObject); begin close; end;

procedure TChatForm.Memo1Change(Sender: TObject);

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 23 dari 40

Praktikum Tugas 3 Perancangan Program

Client-Server dengan Port 50

Program Client Pemrograman untuk server client sama dengan program diatas, namun dalam hal ini, client dapat masuk ke server karena server memiliki beberapa layanan untuk terkoneksi seperti client type non bloking, dan dapat aktif berulang-ulang menghubungi server lainnya, serta pengirman dengan conection dipisahkan..

Adapun listing program untuk checkbox-nya adalah :

Property dari Socket client adalah :

procedure TFormClient.CheckBoxKoneksiKeServerClick(Sender: TObject);

begin if CheckBoxKoneksiKeServer.Checked=True then begin editPesan.Enabled:=false; editIPAddress.enabled:=false; end; editPesan.Enabled:=true; editIPAddress.enabled:=true;

if CheckBoxKoneksiKeServer.Checked then begin ClientSocketKirim.Host := EditIPaddress.Text; ClientSocketKirim.Port := 50; ClientSocketKirim.Active := True; end else begin ClientSocketKirim.Active := False; end; end;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 24 dari 40

Program Pengiriman adalah sebagai berikut :

Form untuk clien adalah sebagai berikut :

Program lengkap untuk clien adalah sebagai berikut :

Bersambung…..

procedure TFormClient.ButtonSendClick(Sender: TObject);

begin if Trim(EditPesan.Text) <> '' then ClientSocketKirim.Socket.SendText(EditPesan.Text); end;

unit clientunitfotm;

interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, JvExControls, JvComCtrls, ScktComp;

type TFormClient = class(TForm) CheckBoxKoneksiKeServer: TCheckBox; ClientSocketKirim: TClientSocket; EditIPaddress: TJvIPAddress; Label1: TLabel; EditPesan: TLabeledEdit; BitBtn1: TBitBtn; ButtonSend: TButton; Label2: TLabel; Label3: TLabel; procedure CheckBoxKoneksiKeServerClick(Sender: TObject); procedure ButtonSendClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ClientSocketKirimConnect(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public { Public declarations } end;

var FormClient: TFormClient;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 25 dari 40

implementation

{$R *.dfm}

procedure TFormClient.CheckBoxKoneksiKeServerClick(Sender: TObject); begin if CheckBoxKoneksiKeServer.Checked=True then begin editPesan.Enabled:=false; editIPAddress.enabled:=false; end; editPesan.Enabled:=true; editIPAddress.enabled:=true;

if CheckBoxKoneksiKeServer.Checked then begin ClientSocketKirim.Host := EditIPaddress.Text; ClientSocketKirim.Port := 50; ClientSocketKirim.Active := True; end else begin ClientSocketKirim.Active := False; end; end;

procedure TFormClient.ButtonSendClick(Sender: TObject); begin if Trim(EditPesan.Text) <> '' then ClientSocketKirim.Socket.SendText(EditPesan.Text); end;

procedure TFormClient.FormCreate(Sender: TObject); begin

end;

procedure TFormClient.ClientSocketKirimConnect(Sender: TObject; Socket: TCustomWinSocket); begin

end;

end.

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 26 dari 40

Program Server Server merupakan connection control dari client, sehingga client dapet menghubungi server secara berulang-ulang, sebelum pesan terkirim, serta server dapat melihat client yang terhubung, melalui conectionshape dengan warna default Merah jika tidak tidak ada client yang terkoneksi, tetap jika ada client yang terkoneksi maka langsung berubah warnanya menjadi biru.

Programnya dalah sebagai berikut :

Untuk mengaktifkan server dengan menggunakan checkbox adalah :

procedure TFormServerUtama.WMREFRESHCLIENT(var Msg: TMessage);

var BandingServer : TCustomWinSocket; i : Integer; begin for i := 0 To ServerSocketKirim.Socket.ActiveConnections - 1 do begin BandingServer := ServerSocketKirim.Socket.Connections[i]; if Server1 = BandingServer then begin ShapeConnect1.Brush.Color := clBlue; EditClientFrom1.Text := BandingServer.RemoteHost; end; if Server2 = BandingServer then begin ShapeConnect2.Brush.Color := clBlue; EditClientFrom2.Text := BandingServer.RemoteHost; end; if Server3 = BandingServer then begin ShapeConnect3.Brush.Color:= clBlue; EditClientFrom3.Text := BandingServer.RemoteHost; end; end; end;

Procedure TFormServerUtama.CheckBoxAktifkanServerClick(Sender: TObject);

begin if CheckBoxAktifkanServer.Checked then begin ServerSocketKirim.Active := True;

end else begin ServerSocketKirim.Active := False; end; end;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 27 dari 40

Bentuk form untuk server adalah :

Program selengkapnya adalah :

Bersambung……

unit formutamaunit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, ScktComp; const WM_REFRESHCLIENT = WM_USER + 100; type

TFormServerUtama = class(TForm) GroupBox1: TGroupBox; ShapeConnect1: TShape; EditClientFrom1: TLabeledEdit; EditData1: TLabeledEdit; GroupBox2: TGroupBox; ShapeConnect2: TShape; EditClientFrom2: TLabeledEdit; EditData2: TLabeledEdit; GroupBox3: TGroupBox; ShapeConnect3: TShape; EditClientFrom3: TLabeledEdit;

EditData3: TLabeledEdit; BitBtn1: TBitBtn; CheckBoxAktifkanServer: TCheckBox; ServerSocketKirim: TServerSocket;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 28 dari 40

Bersambung….

Label1: TLabel; procedure CheckBoxAktifkanServerClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ServerSocketKirimClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocketKirimClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocketKirimClientRead(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } Server1, Server2, Server3 : Pointer; procedure WMREFRESHCLIENT(VAR Msg : TMessage ); message WM_REFRESHCLIENT; public { Public declarations } end; var FormServerUtama: TFormServerUtama; implementation uses StdConvs; {$R *.dfm} procedure TFormServerUtama.CheckBoxAktifkanServerClick(Sender: TObject); begin if CheckBoxAktifkanServer.Checked then begin ServerSocketKirim.Active := True; end else begin ServerSocketKirim.Active := False; end; end;

procedure TFormServerUtama.WMREFRESHCLIENT(var Msg: TMessage); var BandingServer : TCustomWinSocket; i : Integer; begin for i := 0 To ServerSocketKirim.Socket.ActiveConnections - 1 do begin BandingServer := ServerSocketKirim.Socket.Connections[i]; if Server1 = BandingServer then begin ShapeConnect1.Brush.Color := clBlue; EditClientFrom1.Text := BandingServer.RemoteHost; end; if Server2 = BandingServer then begin ShapeConnect2.Brush.Color := clBlue; EditClientFrom2.Text := BandingServer.RemoteHost; end; if Server3 = BandingServer then begin ShapeConnect3.Brush.Color := clBlue; EditClientFrom3.Text := BandingServer.RemoteHost;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 29 dari 40

Bersambung…..

end; end; end;

procedure TFormServerUtama.FormCreate(Sender: TObject); begin ShapeConnect1.Brush.Color := clRed; ShapeConnect2.Brush.Color := clRed; ShapeConnect3.Brush.Color := clRed; Server1 := nil; Server2 := nil; Server3 := nil; end;

procedure TFormServerUtama.ServerSocketKirimClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin if Server1 = nil then begin ShapeConnect1.Brush.Color := clBlue; EditClientFrom1.Text := Socket.RemoteHost; Server1 := Socket; end else if Server2 = nil then begin ShapeConnect2.Brush.Color := clBlue; EditClientFrom2.Text := Socket.RemoteHost; Server2 := Socket; end else if Server3 = nil then begin ShapeConnect3.Brush.Color := clBlue; EditClientFrom3.Text := Socket.RemoteHost; Server3 := Socket; end else begin Socket.Disconnect(ServerSocketKirim.Socket.ActiveConnections - 1); end; PostMessage(Handle, WM_REFRESHCLIENT, 0,0) ; end;

procedure TFormServerUtama.ServerSocketKirimClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin if Server1 = Socket then begin ShapeConnect1.Brush.Color := clRed; EditClientFrom1.Clear; Server1 := nil; end

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 30 dari 40

Tampilan Server jika dihubungkan dengan client adalah :

Tampilan client

else if Server2 = Socket then begin ShapeConnect2.Brush.Color := clRed; EditClientFrom2.Clear; Server2 := nil; end else if Server3 = Socket then begin ShapeConnect3.Brush.Color := clRed; EditClientFrom3.Clear; Server3 := nil; end; PostMessage(Handle, WM_REFRESHCLIENT, 0,0); end;

procedure TFormServerUtama.ServerSocketKirimClientRead(Sender: TObject; Socket: TCustomWinSocket); begin if Server1 = Socket then begin EditData1.Text := Socket.ReceiveText; end else if Server2 = Socket then begin EditData2.Text := Socket.ReceiveText; end else if Server3 = Socket then begin EditData3.Text := Socket.ReceiveText; end; end; end.

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 31 dari 40

Respont dari Server adalah :

Respon server jika ada clinet terhubung, warna

shapeconnection langsung berubah

menjadi Biru

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 32 dari 40

Praktikum Tugas 4 Perancangan Program

Server-Client dengan Port 50

Program Client Program diatas sama dengan Program Client Server, namun respon dari server ke client apabila ada client yang terhubung, maka server dapat memberikan pesan balik ke client,

Form dari pada clinet adalah sebagai berikut :

Program yang perlu ditambah pada socket client yaitu onread (lihat propertynya):

Property Socket client adalah :

procedure TFormClient.ClientSocketKirimRead(Sender: TObject;

Socket: TCustomWinSocket); var pesan : String; begin pesan := Socket.ReceiveText; Editserver.Text := pesan; pesan := ''; end;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 33 dari 40

Program selengkapnya adalah : unit clientunitfotm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, JvExControls, JvComCtrls, ScktComp; type TFormClient = class(TForm) CheckBoxKoneksiKeServer: TCheckBox; ClientSocketKirim: TClientSocket; EditIPaddress: TJvIPAddress; Label1: TLabel; EditPesan: TLabeledEdit; BitBtn1: TBitBtn; ButtonSend: TButton; EditServer: TLabeledEdit; procedure CheckBoxKoneksiKeServerClick(Sender: TObject); procedure ButtonSendClick(Sender: TObject); procedure ClientSocketKirimRead(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public { Public declarations } end; var FormClient: TFormClient; implementation {$R *.dfm} procedure TFormClient.CheckBoxKoneksiKeServerClick(Sender: TObject); begin if CheckBoxKoneksiKeServer.Checked then begin ClientSocketKirim.Host := EditIPaddress.Text; ClientSocketKirim.Port := 50; ClientSocketKirim.Active := True; end else begin ClientSocketKirim.Active := False; end; end; procedure TFormClient.ButtonSendClick(Sender: TObject); begin if Trim(EditPesan.Text) <> '' then ClientSocketKirim.Socket.SendText(EditPesan.Text); end; procedure TFormClient.ClientSocketKirimRead(Sender: TObject; Socket: TCustomWinSocket); var pesan : String; begin pesan := Socket.ReceiveText; Editserver.Text := pesan; pesan := ''; end; end.

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 34 dari 40

Program Server Sama seperti penjelasan diatas, bahwa server dapat memberikan respon kepada client apabila clien pernah menghubugi server.

Bentuk form dari pada server adalah :

Program untuk mengirim balik ke client adalah :

Program Selengkapnya adalah :

Bersambung….

procedure TFormServerUtama.ButtonKirim1Click(Sender: TObject);

var socket : TCustomWinSocket; begin if Server1 = nil then Exit; socket := server1; socket.SendText(Trim(EditKirim1.Text)); end;

unit formutamaunit;

interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, ScktComp, Sockets; const WM_REFRESHCLIENT = WM_USER + 100; type TFormServerUtama = class(TForm) GroupBox1: TGroupBox; ShapeConnect1: TShape; EditClientFrom1: TLabeledEdit; EditData1: TLabeledEdit; GroupBox2: TGroupBox; ShapeConnect2: TShape; EditClientFrom2: TLabeledEdit;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 35 dari 40

Bersambung……..

EditData2: TLabeledEdit; GroupBox3: TGroupBox; ShapeConnect3: TShape; EditClientFrom3: TLabeledEdit; EditData3: TLabeledEdit; BitBtn1: TBitBtn; CheckBoxAktifkanServer: TCheckBox; ServerSocketKirim: TServerSocket; EditKirim1: TLabeledEdit; ButtonKirim1: TButton; ButtonKirim2: TButton; EditKirim2: TLabeledEdit; ButtonKirim3: TButton; EditKirim3: TLabeledEdit; Label1: TLabel; procedure CheckBoxAktifkanServerClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ServerSocketKirimClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocketKirimClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocketKirimClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure ButtonKirim1Click(Sender: TObject); procedure ButtonKirim2Click(Sender: TObject); procedure ButtonKirim3Click(Sender: TObject); private { Private declarations } Server1, Server2, Server3 : Pointer; procedure WMREFRESHCLIENT(VAR Msg : TMessage ); message WM_REFRESHCLIENT; public { Public declarations } end; var FormServerUtama: TFormServerUtama; implementation uses StdConvs; {$R *.dfm} procedure TFormServerUtama.CheckBoxAktifkanServerClick(Sender: TObject); begin if CheckBoxAktifkanServer.Checked then begin ServerSocketKirim.Active := True; end else begin ServerSocketKirim.Active := False; end; end; procedure TFormServerUtama.WMREFRESHCLIENT(var Msg: TMessage);

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 36 dari 40

begin

BandingServer := ServerSocketKirim.Socket.Connections[i]; if Server1 = BandingServer then begin ShapeConnect1.Brush.Color:= clBlue; EditClientFrom1.Text:= BandingServer.RemoteHost; GroupBox1.Enabled := true; editkirim1.Enabled:=true; buttonkirim1.Enabled:=true; end; if Server2 = BandingServer then begin ShapeConnect2.Brush.Color:= clBlue; EditClientFrom2.Text:= BandingServer.RemoteHost; GroupBox2.Enabled := true; editkirim1.Enabled:=true; buttonkirim1.Enabled:=true; end; if Server3 = BandingServer then begin ShapeConnect3.Brush.Color:= clBlue; EditClientFrom3.Text:= BandingServer.RemoteHost; groupBox3.Enabled := true; editkirim1.Enabled:=true; buttonkirim1.Enabled:=true; end; end; end; procedure TFormServerUtama.FormCreate(Sender: TObject); begin ShapeConnect1.Brush.Color := clRed; ShapeConnect2.Brush.Color := clRed; ShapeConnect3.Brush.Color := clRed; GroupBox1.Enabled := False; GroupBox2.Enabled := False; GroupBox3.Enabled := False; Server1 := nil; Server2 := nil; Server3 := nil; end; procedure TFormServerUtama.ServerSocketKirimClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin if Server1 = nil then begin ShapeConnect1.Brush.Color := clBlue; EditClientFrom1.Text := Socket.RemoteHost; Server1 := Socket; ButtonKirim1.Enabled := True; EditKirim1.Enabled := True; end else if Server2 = nil then begin ShapeConnect2.Brush.Color := clBlue; EditClientFrom2.Text := Socket.RemoteHost; Server2 := Socket; ButtonKirim2.Enabled := True; EditKirim2.Enabled := True;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 37 dari 40

Bersambung….

end

else if Server3 = nil then begin ShapeConnect3.Brush.Color := clBlue; EditClientFrom3.Text := Socket.RemoteHost; Server3 := Socket; EditKirim3.Enabled := True; ButtonKirim3.Enabled := True; end else begin Socket.Disconnect(ServerSocketKirim.Socket.ActiveConnections - 1); end; PostMessage(Handle, WM_REFRESHCLIENT, 0,0) ; end; procedure TFormServerUtama.ServerSocketKirimClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin if Server1 = Socket then begin ShapeConnect1.Brush.Color := clRed; EditClientFrom1.Clear; Server1 := nil; GroupBox1.Enabled := False; end else if Server2 = Socket then begin ShapeConnect2.Brush.Color := clRed; EditClientFrom2.Clear; Server2 := nil; GroupBox2.Enabled := False; end else if Server3 = Socket then begin ShapeConnect3.Brush.Color := clRed; EditClientFrom3.Clear; Server3 := nil; GroupBox3.Enabled := False; end; PostMessage(Handle, WM_REFRESHCLIENT, 0,0); end; procedure TFormServerUtama.ServerSocketKirimClientRead(Sender: TObject; Socket: TCustomWinSocket); begin if Server1 = Socket then begin EditData1.Text := Socket.ReceiveText; end else if Server2 = Socket then begin EditData2.Text := Socket.ReceiveText; end else if Server3 = Socket then begin EditData3.Text := Socket.ReceiveText; end;

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 38 dari 40

Tampilan pengiriman data dari client : Data diterima di Server

end;

procedure TFormServerUtama.ButtonKirim1Click(Sender: TObject); var socket : TCustomWinSocket; begin if Server1 = nil then Exit; socket := server1; socket.SendText(Trim(EditKirim1.Text)); end;

procedure TFormServerUtama.ButtonKirim2Click(Sender: TObject); var socket : TCustomWinSocket; begin if Server2 = nil then Exit; socket := server2; socket.SendText(Trim(EditKirim2.Text)); end; procedure TFormServerUtama.ButtonKirim3Click(Sender: TObject); var socket : TCustomWinSocket; begin if Server3 = nil then Exit; socket := server3; socket.SendText(Trim(EditKirim3.Text)); end; end.

Data dikirim ke Server

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 39 dari 40

Tampilan pengiriman data respon dari Server ke Client :

Respons Server dikirim kembali ke Client

Data diterima di Client

Laporan Praktikum Matakuliah Pemrograman Berbasis Jaringan, Menggunakan

Oleh Hasanuddin Sirait (P- 2700207044) Halaman : 40 dari 40

Buku Referensi :

Ir. Inge Martina, 2002, 36 Jam Belajar Komputer, Pemrograman Internet dengan Delphi, Elex Media Komputindo, Jakarta.

Jaja Jamaludin, 2005, Kumpulan Latihan Pemrograman Delphi, Andi Offset, Yokyakarta.

Djoko Susilo, 2005, Grafika Komputer dengan Delphi, Graha Ilmu, Yokyakarta.

This document was created with Win2PDF available at http://www.daneprairie.com.The unregistered version of Win2PDF is for evaluation or non-commercial use only.