Pemrograman Jaringan
Ditulis oleh Eko Budhi Suprasetiawan e-mail : ekobs@developerforce.net Last update 8 July 2002Tujuan
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, 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:$PATHVariabel 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.javaJika 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.javaJika 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 8080Log 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 8080Log 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