Top Banner
PEMROGRAMAN SOCKET A. Sejarah Socket Socket adalah mekanisme komunikasi yang memungkinkan terjadinya pertukaran data antar program atau proses baik dalam satu mesin maupun antar mesin. Gaya pemrograman socket sendiri berawal dari sistem Unix BSD yang terkenal dengan kepeloporannya pada bidang penanganan jaringan, sehingga sering disebut BSD Socket. Socket pertama kali diperkenalkan di sistem Unix BSD versi 4.2 tahun 1983 sebagai kelanjutan dari implementasi protokol TCP/IP yang muncul pertama kali pada sistem Unix BSD 4.1 pada akhir 1981. Hampir setiap variant Unix dan Linux mengadopsi BSD Socket. Pada lingkungan Unix, socket memberikan keleluasaan pemrograman gaya Unix yang terkenal dengan ideologinya, Semua di Unix/Linux adalah file. Komunikasi antar program dapat berlangsung lewat penggunaan deskriptor file standar Unix dengan bantuan socket. Keunggulan dari penggunaan socket adalah anda dapat melakukan komunikasi antar proses/program melalui jaringan berbasis yang TCP/IP tentunya, bahkan dengan program lain yang berjalan pada platform non-unix seperti Microsoft Windows, sepanjang program tersebut berbicara dalam protokol transfer yang sama. Fasilitas-fasilitas yang disediakan oleh mesin unix seperti rlogin, ssh, ftp, dan lain-lain menggunakan socket sebagai sarana komunikasi mereka. Socket dibentuk dan digunakan dengan cara yang berbeda. Komunikasi socket terutama diciptakan untuk tujuan menjembatani komunikasi antara dua buah program yang dijalankan pada mesin yang berbeda. Jangan khawatir, ini tentu saja berarti dua program pada mesin yang sama dapat juga saling berkomunikasi. Kelebihan lain dari komunikasi socket adalah mampu menangani banyak klien sekaligus (multiple clients). B. Sekilas Tentang Socket, TCP Dan UDP 1. Mengenal Socket Pengertian socket adalah interface pada jaringan yang menjadi titik komunikasi antarmesin pada Internet Protocol, dan tentunya tanpa komunikasi ini, tidak akan ada pertukaran data dan informasi jaringan. Socket terdiri dari elemen-elemen utama sebagai berikut: a. Protokol. b. Local IP. c. Local Port. d. Remote IP.
24

Pemrograman Socket1

Aug 18, 2015

Download

Documents

Socket Programming
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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