BAB 10 Jaringan - JENI Intro2 Bab10 Jaringan

  ber bagai peker j aan m el alui j ar ingan . I ni adalah suat u cit a- cit a pem buat an Java yang m enj adi salah sat u keku at an Jav a sej ak d ap at dibuat u ntu k dit am pilkan m el alui int er net . Sebelu m m em pel aj ar i t en t an g j ar in gan dalam Java. Pert am a- t am a An da akan diper ken al kan kepad a beber ap a kon sep dasar j ar ingan.

  Pada akhi r pem bah asan , dihar apkan pem baca dapat :

  1.Menger t i konsep dasar j ar ingan

  

  I P addr ess

   pr ot okol  por t s

  par adigm a clien t / ser ver

    socket

  2.Mem buat aplikasi m enggun ak an pack age j ar ingan Java

   Ser ver Socket Socket

   Mult icast Socket

    Dat agr am Pack et 1 0 .1 Kon se p Da sa r Ja r inga n

  Jika sebel um nya Anda t elah m enget ahui, bah wa int ern et adalah j ar in gan global dengan ber bagai j eni s kom put er yang ber beda y an g t er sam bu ng dalam ber b ag ai car a. Walaupun t er d ap at p er bed aan dalam soft w ar e dan h ar dwar e yang t er sam bu ng ber sam a- sam a, h al t er sebut sangat lah bagus bahwa in t er n et m asih dapat ber fun gsi. Hal ini m em un gkin kan k ar en a st an dar kom uni kasi m em ili ki ket et ap an d an j u ga kesel ar asan. St andar ini m enj am in kesesuaian dan keku at an kom u nikasi dian t ar a lu asny a sist em pada int er net . Mar i kit a pelaj ar i beber ap a st andar yang berlaku .

  1 0 . 1 .1 I P Add re ss

  Pada set iap kom pu t er y an g t er sam bun g den gan in t er net m em ili ki alam at I P yang u ni k. Alam at

  I P secar a logika ham pir sam a dengan alam at pengirim an su r at t r adi sional dim an a m em ili ki ar t i bahwa alam at y an g ber sif at unik t ersebut m ewakili dari ket er an gan sebu ah obj ect . Alam at t er sebut diwakil kan dalam 3 2- bi t nom or yan g digunakan seb ag ai pen genal yang ber sifat unik dar i set iap kom pu t er y an g t ersam bung dengan int er net . 192 .1.1 .1 adalah cont oh dari sebuah al am at I P. Mer eka j u ga bisa dit ulis den gan ben t uk si m bol seper t i docs.r inet .r u.

  1 0 . 1 .2 Prot ok ol

  Kar en a t er dap at j enis kom u ni kasi yang ber beda- beda yang m un gkin t er j adi pada int er net , di sana har u s t erdap at suat u j um lah y an g sam a unt u k m ek ani sm e p en angan gan kom u nikasi. Set iap j enis kom unikasi m em bu t uhkan pr ot okol yang spesifik dan unik. Prot okol m en gat ur per at u ran dan st an dar y an g m enet apkan j enis kom unikasi int er net yang kh usus. Hal t er sebu t m en j el askan for m at dat a yang dikirim lewat int er net , seirin g dengan bagaim an a d an kapan it u di ki rim . Konsep dar i pr ot okol t en t un ya t idak t er lalu asin g un t uk kit a. Men gin gat su dah beber ap a kali Anda t elah m enggun ak an j enis per cak ap an ini :

  " Hallo. " " Hallo. Selam at siang. Bolehkah saya ber bicar a den gan Joan?" " Okay, m ohon t un ggu seben t ar ." " t er im a kasih." ...

  I ni adalah pr otokol sosial yan g digun ak an k et ika d al am p em bicar aan m elalui t elepon . Jeni s pr ot okol tipe ini m em ber ikan kit a k eper cay aan un t uk m en get ah ui apa y an g har us dilakukan dalam sit u asi t er sebu t . Mar i kit a lihat beber ap a pr ot okol penti ng yang digunakan pada in t er net . Hyp er t ext Tr ansfer Pr ot ocol ( HTTP) ad alah salah sat u pr ot okol yang ser i ng di gun ak an . Digunak an unt u k m en t r an sf er doku m en HTML pada Web. Kem udian , ada j u ga File Tr ansfer Pr ot ocol ( FTP) dim an a lebih um um di bandingkan dengan HTTP dan m em per bolehkan Anda u nt u k m ent r ansfer file biner lewat int enet . Kedua pr ot okol t er sebu t m em iliki per at u r an m asing- m asi ng dan st an dar dalam pengirim an dat a. Java j u ga m en du kun g kedu a pr ot okol t er sebut .

  1 0 . 1 .3 Por t Sekar an g, pr otokol hanya bisa di per t im ban gkan j i ka digunakan dalam kon t ek s su at u j asa.

  Sebagai cont oh, pr ot okol HTTP digun ak an ket ika Anda m en yediakan isi Web m elal ui lay anan HTTP. Set iap kom put er p ad a i nt er net dapat m eny ediakan ber b ag ai j en is layanan m elalui ber bagai j enis pr ot okol yan g m en dukun g. Masalahnya, bag ai m an apun j uga, kit a har u s m enget ahui j enis l ay an an sebelum sebuah infor m asi dapat dit ransfer . Unt u k it ulah por t di gun ak an .

  Por t adalah 16 - bit nom or dim ana m engen al set iap lay an an yang dit aw ar kan oleh ser v er j ari ngan. Un t uk m en ggunakan layan an khu sus dan oleh kar en a it u , j alu r kom unikasi yang m elew at i prot okol t er t ent u , Anda per lu m enyam bun gkan pad a por t yang sesu ai . Por t di hubun gkan den gan nom or dan beber ap a n om or ber si fat spesifik yang ber h ubungan dengan j enis layanan kh usus. Por t den gan layanan peker j aan t er t en t u disebu t por t st an dar . Seb ag ai cont oh, lay an an FTP t er let ak pada por t 21 sedangkan layanan HTTP t erl et ak p ad a por t 8 0. Jik a Anda ingin m enggunakan file t r an sf er FTP, Anda perlu t er hu bun g dengan por t 21 pada kom put er Anda. Sek ar ang, sem ua st andar layanan t er t ent u di berikan nilai por t dibawah 102 4. por t dengan nilai di at as 102 4 disediakan u nt u k kom unikasi cust om . Jika t er dap at kasu s di m ana por t dengan nilai diat as 10 24 t elah digun ak an oleh beber apa kom u nikasi cu st om , Anda har us m encar i nilai lain yang t idak digun ak an .

  1 0 . 1 .4 Pa r a digm a clie n t / se rv e r

  Par adigm a clien t / ser ver ad al ah dasar unt u k f ram ewor k j ar ingan Jav a. Ten t unya, penet apan i ni t er diri dari dua el em en besar , yait u client dan ser ver . Client adalah m esin yang m em but u hkan beber ap a j en is infor m asi sedangkan ser ver adalah m esin yang m enyim pan i nfor m asi dan m enu nggu unt u k m eny am paikann ya pada client .

  Par adigm a ini m enj elask an sebuah skenar io seder hana. Ten t un ya, cli ent t er hubun g dengan sev er dan m em i nt a in for m asi. Kem udi an ser v er m engin gat per m int aan d an m engem b alikan infor m asi yan g t er sedi a k ep ada cli en t .

  

Gam bar1 .1.4: Model Client / Ser v er

1 0 . 1 .5 sock e ts

  Konsep um um j ar ingan yan g t er akhir sebelum kit a m em bah as lebih dalam t ent ang Jav a net wor king adalah dengan m em p er h at ikan socket s. Kebany ak an pem r ogr am an Java net wor k m enggu nakan j enis khu su s dari kom uni kasi j aringan yang diket ahui seb ag ai socket s.

  Socket adalah soft war e abst r ak unt u k m edia input at au out put kom unikasi. Socket digunakan ol eh Jav a u nt u k m en gat asi kom unikasi pada j ar in gan l evel r en dah. Jalur kom unikasi ini m em ungkinkan u ntu k m en t r ansfer dat a m elalui port khu su s. Singkat ny a, sock et adalah point t er akhir u ntuk kom uni kasi an t ar a du a m esin .

  1 0 .2 The Ja va N e t w or k in g Pa ck a g e

  Package dar i j av a.n et m en yedi ak an ban yak class y an g ber gu na untu k pen gem b an gan aplikasi j ari ngan. Un t uk daf t ar len gkap dar i class j ar ingan dan int erf ace, dapat dilihat pad a doku m ent asi API . Pem belaj ar an akan difoku sk an pada em pat cl ass yait u : class Ser ver Sock et , Socket , Multicast Socket , d an Dat agr am Packet .

  1 0 . 2 .1 Cla ss Se r v e r Sock e t d a n Sock e t

  Class Ser ver Sock et m enyedi ak an f ungsi- fun gsi dasar dar i sebuah ser v er . Tab el berikut m enj elaskan du a dari em pat con st r u ct or pada class Ser ver Socket :

  

Con st ru ct or Se rve rSo ck e t

  ServerSocket(int port) Ket ika sebu ah ser ver m enet apk an su at u por t t er t ent u , sebuah por t 0 m enugask an sebu ah ser v er kepada por t bebas m an apun. Pan j an g an t r ian m aksim um u nt uk koneksi yang akan dat ang diat ur seban yak 50 sebagai default n ya. ServerSocket(int port, int backlog) Ket ika sebu ah ser v er m enet ap kan su at u por t t er t ent u, panj ang ant r ian m aksim um u ntu k kon eksi yang ak an dat an g ber d asar k an pada par am et er backlog.

Tabel 1.2. 1a: Con st ruct or Ser ver Sock et

  Ber iku t ini adalah beber ap a m et h od class pada Ser ver Socket :

  

Me t h od Se rve rSo ck e t

  public Socket accept() Meny ebabk an ser v er u nt uk m en unggu dan m endengar k an dar i koneksi clien t , kem udian m en er im anya. public void close() Menut u p socket ser ver . Cli en t tidak dapat lagi t er hubung ke ser ver hingga dibuka kem bali public int getLocalPort() Mengem balikan port dim ana socket j uga m em bat asi public boolean isClosed() Mendet eksi apakah sock et t er t ut u p at au belum

Tabel 1.2.1 b: Met hod Ser v er Sock et

  Contoh yan g ber h asil m elakuk an im plem en t asi sebu ah ser ver sed er h an a, dim an a sebuah infor m asi seder han a dikirim ol eh client dapat dilihat pada listin g program ber iku t ini : import java.net.*; import java.io.*; public class EchoingServer { public static void main(String [] args) { ServerSocket server = null; Socket client; try { server = new ServerSocket(1234);

  //1234 nomor port yang belum digunakan } catch (IOException ie) { System.out.println("Cannot open socket."); System.exit(1); } while(true) { try { client = server.accept(); OutputStream clientOut = client.getOutputStream(); PrintWriter pw = new PrintWriter(clientOut, true); InputStream clientIn = client.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(clientIn)); pw.println(br.readLine()); } catch (IOException ie) { } } } }

  Ket ika class Ser v er Socket m engim plem ent asi kan ser v er socket , Class Sock et m engim plem ent asikan socket client . Class Socket m em iliki del apan const r uct or , dua di an t ar anya siap dipanggil. Langsung saj a kit a lihat dua const r uct or t er sebut .

  Con st ru ct or Sock e t

  Socket(String host, int port) Mem bu at sebu ah socket client dim ana dihu bungk an dengan di berikan n om or por t pada h ost t er t en t u.

  Socket(InetAddress address, int port) Mem bu at sebu ah socket client dim ana dihu bungk an dengan di berikann ya nom or por t pada alam at I P t er t en t u.

  Tabel 1.2.1c: Const ruct or Sock et

  Ber iku t adal ah beber ap a d ar i m et hod class pada Socket :

  M e t h od Sock e t

  public void close() Menut u p socket clien t public InputStream getInputStream() Mener im a k em bali inpu t st r eam y an g ber h ubungan dengan socket ini . public OutputStream getOutputStream() Mener im a k em bali out put st r eam yang berh ubungan dengan socket ini. public InetAddress getInetAddress()

  

M e t h od Sock e t

Mengem balikan alam at I P kepada socket ini pada saat m asih t er hu bu ng.

  public int getPort() Mengem balikan r em ot e por t kepada socket ini pada saat m asih t er hu bu ng. public boolean isClosed() Mendet eksi apakah sock et t elah t er t ut up at au t idak

Tabel 1.2.1 d: Met hod Sock et

  Contoh yan g ber hasil m el akuk an im pl em en t asi sebu ah client seder han a, dim ana m en gi rim dat a k ep ada ser ver dapat dilihat pada list ing progr am dibawah ini :

  import java.io.*; import java.net.*; public class MyClient { public static void main(String args[]) { try { //Socket client = new Socket("133.0.0.1", 1234);

Socket client = new Socket(InetAddress.getLocalHost(),

1234); InputStream clientIn = client.getInputStream(); OutputStream clientOut = client.getOutputStream(); PrintWriter pw = new PrintWriter(clientOut, true); BufferedReader br = new BufferedReader(new

InputStreamReader(clientIn));

BufferedReader stdIn = new BufferedReader(new

InputStreamReader(System.in));

System.out.println("Type a message for the server: ");

pw.println(stdIn.readLine()); System.out.println("Server message: "); System.out.println(br.readLine()); pw.close(); br.close(); client.close(); } catch (ConnectException ce) {

System.out.println("Cannot connect to the server.");

} catch (IOException ie) { System.out.println("I/O Error."); } } }

  1 0 . 2 .2 Cla ss M ult ica st Sock e t d a n D a t a g ra m Pa ck e t

  Class Mul ticast Sock et san gat bergun a un t uk aplikasi yang m engi m plem ent asi kan kom u nikasi secar a b er k el om pok. Alam at I P unt u k kelom pok m ulticast ber kisar ant ar a 224 .0.0 .0 hingga 239.2 55.255 .255. Meskipun begi t u, alam at 2 24. 0.0. 0 t elah dipesan dan seh ar usny a t idak di gun ak an . Class i ni m em ili ki t iga const r uct or t et api yan g ak an di bahas han y a salah sat u d ar i ket iga con st r uct or ini.

  

Con st ru ct or M u lt ica st Sock e t

  MulticastSocket(int port) Mem bu at m u lticast sock et dibat asi dengan pem ber ian n om or por t

  

Tabel 1. 2. 2a: Con st ruct or Mul t icast Socket

Tabel ber ikutn ya m em ber ikan pen j el asan beber ap a m et h od Mult icast Sock et .

  

M e t h o d M u lt ica st Sock e t

  public void joinGroup(InetAddress mcastaddr) Ber gabu ng dengan kelom pok m ulticast pad a alam at t er t ent u public void leaveGroup(InetAddress mcastaddr) Menin ggalkan k elom pok m ulti cast pada alam at t er t en t u public void send(DatagramPacket p) Met ode t u r unan dar i cl ass Dat agr am Socket . Men gi rim p dar i socket ini.

Tabel 1.2.2 b: Met hod Mult i cast Sock et

  Sebelum seseor an g dapat m engi rim pesan kepada su at u k el om pok, per t am a k ali yang h ar u s dilakuk an oleh or an g t er sebu t adalah har us m enj adi an ggot a d ar i m ul ticast kelom pok dengan m enggu nakan m et hod j oinGr oup. Sek ar an g seor ang anggot a dapat m engirim pesan m elalui m et hod sen d. Jika An da t elah selesai ber bicar a deng an k el om pok, An da dapat m en ggunak an m et hod leaveGr ou p u nt uk m elepaskan keanggot aan An da. Sebelum m elih at con t oh dal am m enggun ak an cl ass m ult icast Socket , p er t am a- t am a m ar i kit a lih at pada cl ass Dat agr am Packet . Per hat ikan bahwa dalam m et h od send dar i class m ult iSocket , di butu hkan par am et er y ait u obj ect Dat agr am Packet . Sehingga, ki t a har us m en ger t i obj ect j enis ini sebelum m enggu nakan m et h od send.

  Class Dat agr am Packet digun ak an unt u k m en girim d at a m elalui prot okol connect ionless sep er t i m ulticast . Masal ah yang diti m bulkan bahwa pengirim an packet t idak t er j am i n. Mari kit a per hat ikan dua dar i enam const r uct or .

  

Con st ru ct o r Da t a g ra m Pa ck e t

  DatagramPacket(byte[] buf, int length) Const r uct or dari dat agr am Packet un t uk m ener im a pak et den gan panj ang lengt h. Seh ar usn ya kur ang dari at au sam a dengan ukur an dari buffer buf.

  DatagramPacket(byte[] buf, int length, InetAddress address, int port) Const r uct or dari dat agr am Packet un t uk m engirim paket deng an panj ang lengt h dengan n om or por t t er t en t u dan host t er t en t u.

  

Tabel 1.2.2c: Const r uct or Dat agram Pack et Ber iku t adal ah beber ap a m et h od dari class Dat agr am Pack et .

  

M e t h od- m e t hod Da t a gra m Pa ck e t

  public byte[] getData() Mengem balikan bu ffer dim an a dat a t el ah disim pan public InetAddress getAddress() Mengem balikan alam at I P m esin dim an a paket y an g dikirim at au y ang dit er im a public int getLength() Mengem balikan panj ang dat a y an g dikirim at au dit er im a public int getPort() Mengem balikan nom or port pada r em ot e host dim an a p ak et yang dikirim at au yang dit er im a

  

Tabl e 1. 2.2 d: Met hod Dat agram Pack et

  Contoh m ulticast kit a j uga m engan du ng dua cl ass, ser ver dan client . Ser ver m ener im a pesan dar i client dan m encet ak pesan t er sebut . Ber iku t adal ah class ser ver import java.net.*; public class ChatServer { public static void main(String args[]) throws Exception { MulticastSocket server = new MulticastSocket(1234); InetAddress group = InetAddress.getByName("234.5.6.7"); //getByName – Mengembalikan alamat IP yang diberikan oleh Host server.joinGroup(group); boolean infinite = true; /* Server terus-menerus menerima data dan mencetaknya*/ while(infinite) { byte buf[] = new byte[1024]; DatagramPacket data = new DatagramPacket(buf, buf.length); server.receive(data); String msg = new String(data.getData()).trim(); System.out.println(msg); } server.close(); } }

  Ber iku t adal ah class client import java.net.*; import java.io.*; public class ChatClient { public static void main(String args[]) throws Exception { MulticastSocket chat = new MulticastSocket(1234);

  InetAddress group = InetAddress.getByName("234.5.6.7"); chat.joinGroup(group); String msg = ""; System.out.println("Type a message for the server:"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); msg = br.readLine(); DatagramPacket data = new DatagramPacket(msg.getBytes(),

  0, msg.length(), group, 1234); chat.send(data); chat.close(); }

  }

  1 0 .3 La t iha n 1 0 . 3 .1 Tr iv ia Se r v e r

  Buat lah sebuah ser ver y an g ber isi sat u set per t any aan y an g m udah. Secar a seder hana, akan ad a sekit ar 5- 10 per t any aan. Cli en t yang t er hu bung ke ser v er m en giri m sebuah per m int aan unt uk sebu ah per t any aan at au j awaban sebuah per t any aan, Client m en girim pesan “ per m in t aan” . Un t uk j aw aban dar i sebu ah per t an yaan , cli en t m en gi rim pesan “ j aw ab an ” . Ket ika m en er im a pesan “ per m int aan” , secar a acak ser v er akan m em ilih sat u per t anyaan dar i koleksi yang ada. Dia m en girim kan per t any aan yang di pilih sesu ai dengan nom or yang ber sangku t an kepada clien t . Ket ika ser ver m ener im a pesan “ j aw ab an ” d ar i client , dia m en ginform asi kan user b ah w a user per lu m engirim kan j awaban sesuai den gan nom or per t an yaan k epada ser ver . Jaw aban it u har us dalam f or m at < n o per t anyaan> # < j aw aban Anda> . Ber iku t adal ah cont oh sken ar io : Cli en t : "per m in t aan" Ser ver : "3 # Siapa pem bu at Jav a?" Cli en t : "j aw aban" Ser ver : "Ber ikan j aw ab anm u dengan for m at : < nomor per t an yaan r > # < j aw aban An da> " Cli en t : "3 # Jam es Gosling" Ser ver : Ker j a y ang bagu s! ...