• Tidak ada hasil yang ditemukan

Client/Server System

Dalam dokumen Sistem Operasi. Bahan Kuliah IKI-20230 (Halaman 35-38)

3. Proses dan Penjadwalan

3.4. Hubungan Antara Proses dan Client/Server Proses

3.4.2. Client/Server System

} }

1. Menunggu sampai batas waktu yang tidak dapat ditentukan sampai terdapat ruang kosong pada mailbox.

2. Menunggu paling banyak n milidetik.

3. Tidak menunggu, tetapi kembali (return) secepatnya.

4. Satu pesan dapat diberikan kepada sistem operasi untuk disimpan, walaupun mailbox yang dituju penuh. Ketika pesan dapat disimpan pada mailbox, pesan akan dikembalikan kepada

pengirim(sender). Hanya satu pesan kepada mailbox yang penuh yang dapat diundur (pending) pada suatu waktu untuk diberikan kepada thread pengirim.

3.4.2. Client/Server System

Dengan makin berkembangnya teknologi jaringan komputer, sekarang ini ada kecenderungan sebuah sistem yang bekerja sama menggunakan jaringan. Dalam topik ini akan kita bahas beberapa metoda komunikasi antar proses yang melibatkan jaringan komputer.

3.4.2.1. Socket

Socket adalah sebuah endpoint untuk komunikasi didalam jaringan. Sepasang proses atau thread berkomunikasi dengan membangun sepasang socket, yang masing-masing proses memilikinya. Socket dibuat dengan menyambungkan dua buah IP Address melalui port tertentu. Secara umum socket digunakan dalam client/server system, dimana sebuah server akan menunggu client pada port tertentu. Begitu ada client yang mengkontak server maka server akan menyetujui komunikasi dengan client melalui socket yang dibangun.

3.4.2.1.1. Server dan Thread

Pada umumnya sebuah server melayani client secara konkuren, oleh sebab itu dibutuhkan thread yang masing-masing thread melayani clientnya masing-masing. Jadi server akan membentuk thread baru begitu ada koneksi dari client yang diterima (accept)

Server menggunakan thread apabila client melakukan koneksi, sehingga server memiliki tingkat reabilitas yang tinggi. Pada sistem yang memiliki banyak pemakai sekaligus thread mutlak dibutuhkan, karena setiap pemakai sistem pasti menginginkan respon yang baik dari server.

3.4.2.1.2. Java Socket

Java menyediakan dua buah tipe socket yang berbeda dan sebuah socket spesial. Semua soket ini tersedia dalam paket jaringan, yang merupakan paket standar java. Berikut ini soket yang disediakan oleh java :

Connection-Oriented (TCP) socket, yang diimplementasikan pada kelas java.net.Socket

Connectionless Socket (UDP), yang diimplentasikan oleh kelas java.net.DatagramSocket

Dan yang terakhir adalah java.net.MulticastSocket, yang merupakan perluasan (extended) dari Socket UDP. Tipe socket ini memiliki kemampuan untuk mengirim pesan kebanyak client sekaligus

(Multicast), sehingga baik digunakan pada sistem yang memiliki jenis layanan yang sama.

...

public WebServer(int port, String docRoot) throws IOException {

this.docRoot = new File(docRoot); if(!this.docRoot.isDirectory()) {

throw new IOException(docRoot + " bukan direktori."); }

System.out.println("Menghidupkan Web server "); System.out.println("port : " + port);

System.out.println("docRoot : " + docRoot); try

{

serverSocket = new ServerSocket(port); }

catch(IOException ioe) {

System.out.println("Port sudah digunakan"); System.exit(1);

} }

public void run() {

while(true) {

try{

System.out.println("Menanti connection ... "); Socket socket = serverSocket.accept();

String alamatClient = socket.getInetAddress().getHostAddress(); System.out.println("Menangkap connection dari " + alamatClient); InputStream inputStream = socket.getInputStream();

InputStreamReader inputStreamReader = new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); OutputStream outputStream = socket.getOutputStream();

Potongan kode diatas memperlihatkan teknik yang digunakan oleh java untuk membuka socket (pada kasus ini server socket). Selanjutnya server dapat berkomunikasi dengan clientnya menggunakan InputStream untuk menerima pesan dan OutputStream untuk mengirim pesan.

3.4.2.1.3. RPC (Remote Procedure Call)

Remote Procedure Call (RPC) adalah sebuah metoda yang memungkinkan kita untuk mengakses sebuah prosedur yang berada di komputer lain. Untuk bisa melakukan ini sebuah komputer (server) harus menyediakan layanan remote prosedur. Pendekatan yang dilakuan adalah, sebuah server membuka socket, menunggu client yang meminta proseduryang disediakan oleh server.

Remote Procedure Call masih menggunakan cara primitive dalam pemrograman, yaitu menggunakan paradigma procedural programming. Hal itu membuat kita sulit ketika menyediakan banyak remote procedure.

RPC menggunakan soket untuk berkomunikasi dengan proses lainnya. Pada beberapa sistem (Seperti SUN) RPC secara default sudah terinstall kedalam sistemnya, biasanya RPC ini digunakan untuk administrasi sistem. Sehingga seorang administrator jaringan bisa mengakses sistemnya dan memanajemen sistemnya dari mana saja, selama sistemnya terhubung kejaringan.

3.4.2.1.4. Java RMI

Pendekatan kedua yang akan kita bahas adalah RMI (Remote Method Invocation), sebuah teknik pemanggilan method remote yang lebih secara umum lebih baik daripada RPC. RMI menggunakan paradigma pemrograman berorientasi objek (OOP).Dengan RMI memungkinkan kita untuk mengirim objek sebagai parameter dari remote method. Dengan dibolehkannya program java memanggil method pada remote objek, RMI membuat user dapat mengembangkan aplikasi java yang terdistribusi pada jaringan

Untuk membuat remote method bisa diakses RMI mengimplementasikan remote object menggukan stub dan skleton. Stub bertindak sebagai proxy disisi client, yaitu yang menghubungkan client dengan skleton yang berada disisi server. Stub yang ada disisi client bertanggung jawab untuk membungkus nama method yang akan diakses, dan parameternya, hal ini biasa dikenal dengan marshalling. Stub mengirim paket yang sudah dibungkus ini ke server dan akan di buka (unmarshalling) oleh skleton. Skleton akan menerima hasil keluaran yang telah diproses oleh method yang dituju, lalu akan kembali dibungkus (marshal) dan dikirim kembali ke client yang akan diterima oleh stub dan kembali dibuka paketnya (unmarshall).

3.4.2.1.4.1. Pembuatan Remote Objek

Untuk membuat remote objek kita harus mendefinisikan semua method yang akan kita sediakan pada jaringan, setelah itu dapat digunakan RMI compiler untuk membuat stub dan skleton. Setelah itu kita harus mem-binding remote objek yang kita sediakan kedalam sebuah RMI registry. Setelah itu client dapat mengakses semua remote method yang telah kita sediakan menggunkan stub yang telah dicompile menggunakan RMI compiler terebut.

3.4.2.1.4.2. Akses ke Remote Objek

Sekali objek didaftarkan ke server, client dapat mengakses remote object dengan menjalankan

Naming.lookup() method. RMI menyediakan url untuk pengaksesan ke remote objek yaitu

rmi://host/objek, dimana host adalah nama server tempat kita mendaftarkan remote objek dan objek

adalah parameter yang kita gunakan ketika kita memanggil method Naming.rebind(). Client juga harus menginstall RMISecurityManager untuk memastikan keamanan client ketika membuka soket kejaringan. Java memilki sistem security yang baik sehingga user dapat lebih nyaman dalam melakukan komunikasi pada jaringan. Selain itu java sudah mendukung pemorograman berorientasi object, sehingga

pengembangan software berskala besar sangat dimungkinkan dilakukan oleh java. RMI sendiri

merupakan sistem terdistribusi yang dirancang oleh SUN pada platfrom yang spesifik yaitu Java, apabila anda tertarik untuk mengembangkan sistem terdistribusi yang lebih portable dapat digunakan CORBA sebagai solusi alternatifnya.

Dalam dokumen Sistem Operasi. Bahan Kuliah IKI-20230 (Halaman 35-38)

Dokumen terkait