BAB 1 0
Ja r in g a n
Jav a m em per boleh kan Anda dalam m em per m u dah pengem bang an aplikasi yan g m enger j akan 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
" 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 .
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
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 {
//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
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)
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 {
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"