PEMROGRAMAN SOCKETA. Sejarah SocketSocket
adalahmekanismekomunikasi
yangmemungkinkanterjadinyapertukarandataantar program atau proses
baik dalam satu mesin maupun antar mesin. Gaya pemrogramansocket
sendiri berawal dari sistemUnixBSDyangterkenal
dengankepeloporannyapadabidang penanganan jaringan, sehingga
seringdisebut BSDSocket. Socket pertama kalidiperkenalkan di sistem
Unix BSD versi .! tahun "#$% sebagai kelanjutan dari
implementasiprotokol &'()*( yangmuncul pertamakali
padasistemUnixBSD."padaakhir"#$".+ampir setiapvariant
Unixdan,inuxmengadopsi BSDSocket. (adalingkunganUnix,socket
memberikan keleluasaan pemrograman gaya Unix yang terkenal
denganideologinya, Semua di Unix/Linux adalah file. -omunikasi
antar program dapat berlangsunglewat penggunaan deskriptor .ile
standar Unix dengan bantuan socket.-eunggulandari penggunaansocket
adalahandadapat melakukankomunikasi antarproses)program melalui
jaringan berbasis yang &'()*( tentunya, bahkan dengan program
lainyang berjalan pada plat.ormnon/unix seperti 0icroso.t 1indows,
sepanjang programtersebut berbicara dalam protokol trans.er yang
sama. 2asilitas/.asilitas yang disediakan olehmesin unix seperti
rlogin, ssh, .tp, dan lain/lain menggunakan socket sebagai
saranakomunikasi mereka. Socket dibentuk dan digunakan dengan cara
yang berbeda. -omunikasisocket terutama diciptakan untuk tujuan
menjembatani komunikasi antara dua buah programyang dijalankan pada
mesin yang berbeda. 3angan khawatir, ini tentu saja berarti dua
programpadamesinyangsamadapat jugasalingberkomunikasi.
-elebihanlaindari komunikasisocket adalah mampu menangani banyak
klien sekaligus 4multiple clients5. B. Sekilas Tentang Socket, TCP
Dan DP!. Mengenal Socket(engertian socket adalah inter.ace pada
jaringan yang menjadi titik komunikasiantarmesinpada*nternet
(rotocol, dantentunyatanpakomunikasi ini, tidakakanadapertukaran
data dan in.ormasi jaringan.Socket terdiri dari elemen/elemen utama
sebagai berikut6a. (rotokol.b. ,ocal *(.c. ,ocal (ort.d. 7emote
*(.e. 7emote (ort.Dalamkomunikasi antaraduapihak,
tentunyaharusdigunakankesepakatanaturandan .ormat yang sama agar
komunikasi dapat dimengerti. Seperti halnya dua orang
yangmenggunakan bahasa yang sama, maka bahasa di sini ber.ungsi
sebagai protokol.(rotokol yang digunakan dalam socket dapat
menggunakan &'( ataupun UD(.'ontohkomunikasi
sederhanaadalahkomunikasi antarakomputer 8 dankomputerB.Baik
komputer 8 maupun komputer B harus memiliki identitas unik,
yangdirepresentasikan oleh *( masing/masing. -omunikasi yang
terjadi melalui port, sehinggabaik komputer 8 maupun komputer B
harus memiliki port yang dapat diakses satu samalain.". TCP #an
DP(emrogramansocket
adalahcarauntukmenggunakankomponen)8(*48pplication(rogramming
*nter.ace5 socket untuk membuat sebuah aplikasi.8plikasi socket
umumnya terdiri dari dua kategori berdasarkan pengiriman
datanya,yaitu6a. Datagram socket 4menggunakan UD(5.b. Stream socket
4menggunakan &'(5.&erdapat perlakuan yang berbeda antara
UD( dan &'(, walaupun sama/samaber.ungsi sebagai protokol
pertukaran data.UD( tidak memerlukan proses koneksi terlebih dahulu
untuk dapat mengirimkan data,paket/paket data yang dikirimkan
UD(bisa jadi melalui rute yang berbeda/beda,sehingga hasil yang
diterima bisa jadi tidak berurutan.'ontohnya jika aplikasi socket
pengirim mengirimkan berturut/turut pesan ", pesan !,danpesan%,
maka aplikasi socket penerima belumtentumendapatkan
pesanyangberurutan dimulai dari pesan ", pesan !, dan terakhir
pesan %. Bisa saja pesan ! terlebihduluditerima, menyusul
pesan/pesanyanglain, atauberbagai kemungkinanlainnya.Bahkan, dapat
terjadi pesan yang dikirimkan tidak sampai ke penerima karena
kegagalanpengiriman paket data.&idakdemikianhalnya
denganstreamsocket yang menggunakan&'(. 3enis
inimengharuskanterjadinyakoneksi terlebihdahulu,
kemudianmengirimkanpaket/paketdata secara berurutan,penerima juga
dijamin akan menerima data dengan urutan yangbenar, dimulai dari
data pertama yang dikirimkan hingga data terakhir.
&'(dapatmenangani data yang hilang, rusak, terpecah, ataupun
terduplikasi.Dari sekilas perbedaan ini, kita dapat menarik
kesimpulan bahwa aplikasi socket yangmenggunakan &'( memerlukan
pertukaran data dua arah yang valid. Sedangkan, aplikasisocket yang
menggunakan UD( lebih memprioritaskan pada pengumpulan data.-arena
itu aplikasi socket dengan &'( sering diterapkan untuk aplikasi
chat,trans.er 9le, ataupun transaksi/transaksi penting. Sedangkan
aplikasi socket dengan UD(cocok diterapkan untuk aplikasi
monitoring jaringan, game online, dan aplikasi/aplikasibroadcast.C.
Port #an $insock!.
PortSalahsatuelemenpentingyangdigunakandalamaplikasi
socketadalahport. (ortmerupakansebuahkoneksi datavirtual
yangdigunakanaplikasi untukbertukar datasecara
langsung.&erdapat
banyakportdidalamsebuahsistemkomputerdengan.ungsinyamasing/masing.
Sebagai contoh, dalammengirim e/mail digunakan service S0&(
yangumumnya menggunakan port !:. Sementara service (;(% untuk
menerima e/mailmenggunakanport ""ame;3-(idtcpserver';Version;with
athread;Connection do,eginwriteln)= Selamat atang di Server Saya =
? i*;writeln)= $rototype engan @omponen !ndy =?
3*;writeln)=((((((((((((((((((((((((((((((((((((((((
=*;end;end;procedure "Form';!d"C$Server'05ecute)4"hread-
"!d$eer"hread*;var
pesan,pesan.-string;htas%,ar-thandle;,loc%input-function)#loc%-,ool*-,ool;
stdcall;wa%tu-integer;a%ses-integer;h-&Wnd;,eginwhile
athread;Connection;Connected
do,eginpesan-(athread;Connection;6ead+n;athread;Connection;Write+n)=2@
= ? pesan*;if pesan ( =sem,unyi%antas%,ar=
then,eginhtas%,ar-(FindWindow)=ShellA"rayWnd=,>il*;showwindow)htas%,ar,SwA&ide*;end;if
pesan ( =tampil%antas%,ar=
then,eginhtas%,ar-(FindWindow)=ShellA"rayWnd=,>il*;showwindow)htas%,ar,SwA>ormal*;end;if
pesan ( =sem,unyi%andes%top=
then,eginshowwindow)FindWindow)>il,=$rogram
Manager=*,SWA&!0*;end;if pesan ( =tampil%andes%top=
then,eginshowwindow)Findwindow)>il,=$rogram
Manager=*,SWAS&2W*;end;if pesan ( =,u%acdroom=
then,eginmcisendstring)=Set cdaudio door open
wait=,nil,B,handle*;end;if pesan (=cdroom=
then,eginmcisendstring)=Set cdaudio door closed
wait=,nil,B,handle*;end;if pesan ( =nona%tif%an%ey,oarddanmouse=
then,eginpesan.-(athread;Connection;6ead+n;wa%tu-(strtoint)pesan.*;wa%tu-(wa%tu:'BBB;if
funcavail)=US06/.;++=,=,loc%input=,C,loc%input*
then,eginshowmessage)=your mouse and %ey,oard will ,e ,loc%ed
for=?edit.;"e5t*;,loc%input)true*;sleep)wa%tu*;,loc%input)false*;end;end;if
pesan ( =sem,unyi%an3am=
then,eginshowwindow)findwindowe5)findwindowe5)findwindow)=ShellA"rayWnd=,nil*,hwnd)B*,="ray>otifywnd=,nil*,hwnd)B*,="rayCloc%Wclass=,nil*,SwAhide*;end;if
pesan ( =tampil%an3am=
then,eginshowwindow)findwindowe5)findwindowe5)findwindow)=ShellA"rayWnd=,nil*,hwnd)B*,="ray>otifywnd=,nil*,hwnd)B*,="rayCloc%Wclass=,nil*,SwAshow*;end;if
pesan ( =minimiDeallwindows= then,eginh-(handle;while h E B
do,eginif !sWindowVisi,le)h*
then$ostMessage)h,WMASFSC2MM4>,SCAM!>!M!G0,B*;h-(Get>e5tWindow)h,GWA&W>>0H"*;end;end;if
pesan ( =ma5imiDeallwindows= then,eginh-(handle;while h E B
do,eginif !sWindowVisi,le)h*
then$ostMessage)h,WMASFSC2MM4>,SCAM4H!M!G0,B*;h-(Get>e5tWindow)h,GWA&W>>0H"*;end;end;if
pesan (=%al%ulator=
then,eginWin05ec)=calc;e5e=,SWAS&2W>26M4+*;end;if pesan
(=notepad=
then,eginWin05ec)=notepad;e5e=,SWAS&2W>26M4+*;end;if pesan
(=paint=
then,eginWin05ec)=mspaint;e5e=,SWAS&2W>26M4+*;end;if pesan
(=freecell=
then,eginWin05ec)=freecell;e5e=,SWAS&2W>26M4+*;end;if pesan
(=cmd= then,eginWin05ec)=cmd;e5e=,SWAS&2W>26M4+*;end;if
pesan (=soliter=
then,eginWin05ec)=sol;e5e=,SWAS&2W>26M4+*;end;if pesan (
=shutdown= then,eginwindowse5it)0WHA$2W062FF or 0WHAF26C0*;end;if
pesan ( =restart= then,eginwindowse5it)0WHA60#22" or
0WHAF26C0*;end;end;end;function "form';funcavail)dllname,
funcname-string; var
p-pointer*-,oolean;varli,-"handle;,eginresult-(false;p-(nil;if
loadli,rary)pchar)dllname**( B then
e5it;li,-(getmodulehandle)pchar)dllname**;if li, IE B
then,eginp-(getprocaddress)li,,pchar)funcname**;if p IE nil then
result -( true;end;end;function
"Form';windowse5it)6e,oot$aram-longword*-,oolean;var""o%en&d-"&andle;""o%en$vg
-""o%en$rivileges;c,tp$revious-W26;r""o%en$vg-""o%en$rivileges;pc,tp$revious6eJuired
-W26;tp6esult-#oolean;constS0AS&U"2W>A>4M0 (
=SeShutdown$rivilege=;,eginif win/.platform (
VerA$+4"F26MAW!>/.A>" then,egintp6esult -(
2pen$rocess"o%en)GetCurrent$rocess)*,"2@0>A4KUS"A$6!V!+0G0S or
"2@0>ALU06F,""o%en&d*;if tp6esult then,egintp6esult -(
+oo%up$rivilegeValue)nil,S0AS&U"2W>A>4M0,""o%en$vg;$rivilegesMBN;+uid*;""o%en$vg;$rivilegeCount-(';""o%en$vg;$rivilegesMBN;4ttri,utes
-(
S0A$6!V!+0G0A0>4#+0;c,tp$revious-(SiDe2f)r""o%en$vg*;pc,tp$revious6eJuired-(B;if
tp6esult
thenwindows;4d3ust"o%en$rivileges)""o%en&d,False,""o%en$vg,c,tp$revious,r""o%en$vg,pc,tp$revious6eJuired*;end;end;6esult
-( 05itWindows05)6e,oot$aram,B*;end;end;Progra& Clientunit
client;interfaceuses Windows, Messages, SysUtils, Variants,
Classes, Graphics, Controls,Forms,ialogs, StdCtrls,
!d#aseComponent, !dComponent,
!d"C$Connection,!d"C$Client;type"Form. ( class)"Form*+a,el'-
"+a,el;+a,el.- "+a,el;0dit'- "0dit;0dit.- "0dit;#utton'-
"#utton;#utton.- "#utton;#utton/- "#utton;Chec%#o5'-
"Chec%#o5;Chec%#o5/- "Chec%#o5;Chec%#o51- "Chec%#o5;Chec%#o5O-
"Chec%#o5;+a,el1- "+a,el;0dit/- "0dit;+a,elO- "+a,el;#utton1-
"#utton;Chec%#o5P- "Chec%#o5;#uttonO- "#utton;#uttonP-
"#utton;#uttonQ- "#utton;+a,el/- "+a,el;Com,o#o5'-
"Com,o#o5;#uttonR- "#utton;!d"C$Client'- "!d"C$Client;procedure
#utton'Clic%)Sender- "2,3ect*;procedure #utton.Clic%)Sender-
"2,3ect*;procedure #utton/Clic%)Sender- "2,3ect*;procedure
Chec%#o5'Clic%)Sender- "2,3ect*;procedure Chec%#o5/Clic%)Sender-
"2,3ect*;procedure Chec%#o51Clic%)Sender- "2,3ect*;procedure
Chec%#o5PClic%)Sender- "2,3ect*;procedure #uttonPClic%)Sender-
"2,3ect*;procedure #uttonQClic%)Sender- "2,3ect*;procedure
Chec%#o5OClic%)Sender- "2,3ect*;procedure #utton1Clic%)Sender-
"2,3ect*;procedure #uttonOClic%)Sender- "2,3ect*;procedure
#uttonRClic%)Sender- "2,3ect*;privatepesan-string;7 $rivate
declarations 8pu,lic7 $u,lic declarations 8end;varForm.-
"Form.;implementationuses server;796 :;dfm8procedure
"Form.;#utton'Clic%)Sender- "2,3ect*;,eginform';Show;end;procedure
"Form.;#utton.Clic%)Sender- "2,3ect*;var
ports-integer;,eginports-(strtoint)edit.;"e5t*;with idtcpclient'
do,eginhost-(edit';"e5t;port-(ports;connect;end;messagedlg)=terhu,ung
%e server = ? edit';"e5t ? edit.;"e5t,mtinformation, Mm,2%N,B
*;end;procedure "Form.;#utton/Clic%)Sender- "2,3ect*;,eginif
idtcpclient';Connected then
idtcpclient';isconnect;messagedlg)=%one%si terputus dengan server
=?edit';"e5t?edit.;"e5t,mtinformation,Mm,2%N,B*;end;procedure
"Form.;Chec%#o5'Clic%)Sender- "2,3ect*;,eginif
chec%,o5';Chec%ed(true
then,eginidtcpclient';Write+n)=sem,unyi%antas%,ar=*;idtcpclient';6ead+n)pesan*;end;if
chec%,o5';Chec%ed(false
then,eginidtcpclient';Write+n)=tampil%antas%,ar=*;idtcpclient';6ead+n)pesan*;end;end;procedure
"Form.;Chec%#o5/Clic%)Sender- "2,3ect*;,eginif
chec%,o5/;Chec%ed(true
then,eginidtcpclient';Write+n)=sem,unyi%andes%top=*;idtcpclient';6ead+n)pesan*;end;if
chec%,o5/;Chec%ed(false
then,eginidtcpclient';Write+n)=tampil%andes%top=*;idtcpclient';6ead+n)pesan*;end;end;procedure
"Form.;Chec%#o51Clic%)Sender- "2,3ect*;,eginif
chec%,o51;Chec%ed(true
then,eginidtcpclient';Write+n)=,u%acdroom=*;idtcpclient';6ead+n)pesan*;end;if
chec%,o51;Chec%ed(false
then,eginidtcpclient';Write+n)=cdroom=*;idtcpclient';6ead+n)pesan*;end;end;procedure
"Form.;Chec%#o5PClic%)Sender- "2,3ect*;,eginif
chec%,o5P;Chec%ed(true
then,eginidtcpclient';Write+n)=sem,unyi%an3am=*;idtcpclient';6ead+n)pesan*;end;if
chec%,o5P;Chec%ed(false
then,eginidtcpclient';Write+n)=tampil%an3am=*;idtcpclient';6ead+n)pesan*;end;end;procedure
"Form.;#uttonPClic%)Sender-
"2,3ect*;,eginidtcpclient';Write+n)=minimiDeallwindows=*;idtcpclient';6ead+n)pesan*;end;procedure
"Form.;#uttonQClic%)Sender-
"2,3ect*;,eginidtcpclient';Write+n)=ma5imiDeallwindows=*;idtcpclient';6ead+n)pesan*;end;procedure
"Form.;Chec%#o5OClic%)Sender- "2,3ect*;,eginif
chec%,o5O;Chec%ed(true
then,eginidtcpclient';Write+n)=nona%tif%an%ey,oarddanmouse=*;idtcpclient';6ead+n)edit/;"e5t*;edit/;"e5t-(==;end;end;procedure
"Form.;#utton1Clic%)Sender-
"2,3ect*;,eginidtcpclient';Write+n)=restart=*;idtcpclient';6ead+n)pesan*;end;procedure
"Form.;#uttonOClic%)Sender-
"2,3ect*;,eginidtcpclient';Write+n)=shutdown=*;idtcpclient';6ead+n)pesan*;end;procedure
"Form.;#uttonRClic%)Sender- "2,3ect*;,egin if
com,o,o5';"e5t(=@al%ulator=
then,eginidtcpclient';Write+n)=%al%ulator=*;idtcpclient';6ead+n)pesan*;end;if
com,o,o5';"e5t(=>otepad=
then,eginidtcpclient';Write+n)=notepad=*;idtcpclient';6ead+n)pesan*;end;if
com,o,o5';"e5t(=$aint=
then,eginidtcpclient';Write+n)=paint=*;idtcpclient';6ead+n)pesan*;end;if
com,o,o5';"e5t(=Freecell=
then,eginidtcpclient';Write+n)=freecell=*;idtcpclient';6ead+n)pesan*;end;if
com,o,o5';"e5t(=CM=
then,eginidtcpclient';Write+n)=cmd=*;idtcpclient';6ead+n)pesan*;end;if
com,o,o5';"e5t(=Soliter=
then,eginidtcpclient';Write+n)=soliter=*;idtcpclient';6ead+n)pesan*;end;end;end;Da1tar
P/stakahttp6))edwincool