pemrograman socket1

Post on 18-Aug-2015

217 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Socket Programming

TRANSCRIPT

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

top related