Rabu, 19 Oktober 2011

Pemograman Jaringan

lecturer.ukdw.ac.id/yuan/?tag=pemrograman-jaringan
www.elektro.undip.ac.id/transmisi/des05/mmsomantrides05.PDF



Pemrograman Jaringan

Ditulis oleh Eko Budhi Suprasetiawan e-mail : ekobs@developerforce.net Last update 8 July 2002

Tujuan

Dalam latihan ini Anda akan mengenal pemrograman jaringan dalam Java.

Rancangan

Anda akan mengembangkan aplikasi client server sederhana, di mana sebuah server berjalan dan jika dihubungi oleh sebuah client akan mengirimkan pesan "Salam Keadilan !"

Pembekalan

Pemrograman jaringan dikembangkan untuk menyambungkan proses-proses komputasi yang lumrahnya berjalan dalam mesin-mesin yang berbeda yang terhubung dalam suatu jaringan komputer. Contohnya adalah :
  • Web browser mengakses Web server melalui jaringan.
  • Aplikasi basis data, di mana terdapat client dan server yang berada di mesin komputer yang terpisah, dan berinteraksi dalam dalam jaringan.
  • Aplikasi e-mail di mana terdapat mail client berkomunikasi dengan mail server.
Dalam pemrograman jaringan, inti tantangannya adalah bagaimana Anda dapat mengirimkan data dari sebuah proses ke proses lainnya melalui pipa yang menghubungkan keduanya. Pipa antara dua proses ini dapat dianalogikan dengan saluran telepon antara dua pembicara. Dalam analogi sambungan telepon, seorang pembicara dapat bercakap di satu sisi , kemudian suaranya akan mengalir melalui kabel telepon ke lawan bicaranya, sehingga lawan bicara dapat mendengarnya, dan sebaliknya.
Dalam pemrograman jaringan, setelah Anda membuat sebuah pipa data antara dua proses, maka masing-masing proses akan memegang satu ujung. Setiap ujung dari pipa data ini disebut socket. Aliran data antara kedua socket ini disebut data stream. Masing-masing socket menggenggam dua stream, yaitu output stream dan input stream.
Sebuah proses dapat mengirim data ke proses lain dengan menuliskannya ke output stream yang dimiliki sebuah socket. Sebuah proses dapat menerima data dengan membacanya dari input stream yang dimiliki sebuah socket. Dengan cara ini maka dapat terjadi pertukaran data, komunikasi dan interaksi antara dua proses yang berbeda meskipun mereka terpisah dalam jaringan. Proses-proses ini dapat terpisah tetapi terjaring, baik dalam intranet, extranet atapun internet, tidak peduli apakah satu proses berada di Afrika Tengah dan proses lainnya berada di tengah Samudra Pasifik.
Class-class untuk mengembangkan pemrograman jaringan dikumpulkan dalam package java.net, yang mempunyai dua class utama yaitu dan
  • java.net.ServerSocket, digunakan untuk membangun server
  • java.net.Socket, digunakan untuk membangun pipa antara server dan client

Persiapan

  • Anda perlu meng-install terlebih dahulu Java Development Kit (JDK)
  • Buatlah sebuah directory untuk latihan Anda, misalnya /home/lab/touch

Langkah

Langkah 1 : Dengan text editor tulislah SalamKeadilanServer.java

import java.io.*;
import java.net.*;


public class SalamKeadilanServer
{
        private String namaServer;
        private ServerSocket serverSocket;

        public SalamKeadilanServer(String namaServer, int port)
                throws IOException
        {
                this.namaServer = namaServer;
                System.out.println("Menghidupkan server bernama :
    " + namaServer + " di port : " + port);
                serverSocket = new ServerSocket(port);
        }


        public void operateService()
                throws IOException
        {
                System.out.println(namaServer + " menanti connection ... ");
                Socket socket = serverSocket.accept();
                String alamatClient = socket.getInetAddress().getHostAddress();

                System.out.println(namaServer + " menangkap connection dari "
    + alamatClient);


                InputStream inputStream = socket.getInputStream();
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

                OutputStream outputStream = socket.getOutputStream();
                PrintWriter printWriter = new PrintWriter(outputStream, true);

                String namaClient = bufferedReader.readLine();
                System.out.println(namaServer + " membaca nama client : "
    + namaClient);

                System.out.println(namaServer + " mengirim pesan : ");
                String pesanDikirim = "Pesan dari " + namaServer + ", untuk "
    + namaClient + "di " + alamatClient +
    " : Salam Keadilan !";
                System.out.println(pesanDikirim);
                printWriter.println(pesanDikirim);

                bufferedReader.close();
                printWriter.close();
                socket.close();
                System.out.println(namaServer + " menutup connection.");
        }
}
Simpanlah di directory yang telah Anda persiapkan sebagai SalamKeadilanServer.java

Langkah 2 : Dengan text editor tulislah SalamKeadilanServerApp.java

public class SalamKeadilanServerApp
{
        public static void main(String[] args)
        {
                if(args.length<2)
                {
                        System.out.println("Cara penggunaan
:java SalamKeadilanServerApp
 <namaServer> <port>");
                        System.exit(0);
                }

                try
                {
                        String namaServer = args[0];
                        String portStr = args[1];
                        int port = Integer.parseInt(portStr);
                        SalamKeadilanServer server =
 new SalamKeadilanServer(namaServer, port);
                        server.operateService();
                }
                catch(java.io.IOException ioe)
                {
                        ioe.printStackTrace();
                }
        }
}
Simpanlah di directory yang telah Anda persiapkan sebagai SalamKeadilanServerApp.java

Langkah 3 : Dengan text editor tulislah SalamKeadilanClient.java

import java.io.*;
import java.net.*;


public class SalamKeadilanClient
{
        private String namaClient;
        private String alamatServer;
        private int port;

        public SalamKeadilanClient(String namaClient, String alamatServer, int port)
        {
                System.out.println("Membuat client dengan nama : " + namaClient);
                this.namaClient = namaClient;
                this.alamatServer = alamatServer;
                this.port = port;
        }


        public void connectToServer()
                throws IOException
        {
                System.out.println(namaClient + " menghubungi server di alamat "
    + alamatServer + " di " + port);
                Socket socket = new Socket(alamatServer, port);

                InputStream inputStream = socket.getInputStream();
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

                OutputStream outputStream = socket.getOutputStream();
                PrintWriter printWriter = new PrintWriter(outputStream, true);

                System.out.println(namaClient + " mengirim data tentang nama ke server.");
                printWriter.println(namaClient);

                System.out.println(namaClient + " menangkap pesan  dari server : ");
                String pesan = bufferedReader.readLine();

                System.out.println(pesan);

                bufferedReader.close();
                printWriter.close();
                System.out.println(namaClient + " menutup connection.");
                socket.close();
        }
}
Simpanlah di directory yang telah Anda persiapkan sebagai SalamKeadilanClient.java

Langkah 4 : Dengan text editor tulislah SalamKeadilanClientApp.java

public class SalamKeadilanClientApp
{
        public static void main(String[] args)
        {
                if(args.length<3)
                {
                        System.out.println("Cara penggunaan:
java SalamKeadilanClientApp
<namaClient> <alamatServer> <nomorPortdariServer>");
                        System.exit(0);
                }

                try
                {
                        String namaClient = args[0];
                        String alamatServer = args[1];
                        String portStr = args[2];
                        int port = Integer.parseInt(portStr);
                        SalamKeadilanClient client = new SalamKeadilanClient
      (namaClient, alamatServer, port);
                        client.connectToServer();
                }
                catch(java.io.IOException ioe)
                {
                        ioe.printStackTrace();
                }
        }
}
Simpanlah di directory yang telah Anda persiapkan sebagai SalamKeadilanClientApp.java

Langkah 5 : Persiapkan dua buah console

Anda akan meng-compile dan meluncurkan aplikasi dari console. Luncurkan dua buah console, dan lakukan change directory di kedua console tsb ke directory yang sudah dipersiapkan.
Untuk dapat sukses melakukan kompilasi dan meluncurkan aplikasi, Anda harus menge-set setidaknya dua buah variabel lingkungan dalam Operating System Anda, yaitu : Variabel lingkungan PATH harus memuat directory dimana perintah java dan javac. Contoh untuk menge-set variabel lingkungan PATH :
$ export PATH=/home/lab/jdk1.3.1_01/bin:$PATH
Variabel lingkungan CLASSPATH harus memuat directory di mana file .class dari aplikasi Anda berada. Contoh untuk menge-set variabel lingkungan CLASSPATH :
$ export CLASSPATH=/home/lab/touch

Langkah 6 : Meng-compile SalamKeadilanServerApp.java di console pertama

Melalui console, jalankan javac :
$ javac SalamKeadilanServerApp.java
Jika Anda menjalani langkah-langkah dengan benar, Anda dapat menemukan file SalamKeadilanServerApp.class, dan SalamKeadilanServer.class di dalam directory yang sama.

Langkah 6 : Meng-compile SalamKeadilanClientApp.java di console kedua

Melalui console, jalankan javac :
$ javac SalamKeadilanClientApp.java
Jika Anda menjalani langkah-langkah dengan benar, Anda dapat menemukan file SalamKeadilanClientApp.class, dan SalamKeadilanClient.class di dalam directory yang sama.

Langkah 7 : Meluncurkan aplikasi SalamKeadilanServerApp di console pertama

Untuk meluncurkan aplikasi Anda, melalui console, jalankan java :
$ java SalamKeadilanServerApp SalamKeadilanServer 8080
Log di console :
Menghidupkan server bernama : SalamKeadilanServer di port : 8080
SalamKeadilanServer menanti connection ...

Langkah 8 : Meluncurkan aplikasi SalamKeadilanClientApp di console kedua

Untuk meluncurkan aplikasi Anda, melalui console, jalankan java :
$ java SalamKeadilanClientApp ekobs@developerforce.net localhost 8080
Log di console :
Membuat client dengan nama : ekobs@developerforce.net
ekobs@developerforce.net menghubungi server di alamat localhost di 8080

Langkah 9 : Perkembangan komunikasi client-server

Saat SalamKeadilanServerApp mendapat connection, akan ditemukan log :
SalamKeadilanServer menangkap connection dari 127.0.0.1
SalamKeadilanServer membaca nama client : ekobs@developerforce.net
SalamKeadilanServer mengirim pesan :
Pesan dari SalamKeadilanServer, untuk ekobs@developerforce.net
di 127.0.0.1 : Salam Keadilan !
Di sisi client, dapat ditemukan log :
ekobs@developerforce.net mengirim data tentang nama ke server.
ekobs@developerforce.net menangkap pesan  dari server :
Pesan dari SalamKeadilanServer, untuk ekobs@developerforce.net
di 127.0.0.1 : Salam Keadilan !
Selanjutnya keduanya menutup connection. Di sisi client :
ekobs@developerforce.net menutup connection.
Di sisi server :
SalamKeadilanServer menutup connection.     

Tidak ada komentar:

Posting Komentar