CHAT NETWORK PROGRAMMING
Assalamualaikum Warahmatullahi Wabarakatuh..
Hello Guys! Setelah kemarin membahas tentang apasih network programming itu, sekarang kita akan membahas dan mengcoding tentang chat network programming yaitu antara server dan client.
Java menyediakan obyek Socket dan ServerSocket untuk komunikasi soket TCP. ServerSocket digunakan pada sisi aplikasi server, sedangkan Socket digunakan baik pada sisi aplikasi server maupun client. Client-Server : siapa yang mulai meminta dilayani , siapa yg melayani. Jika ada 2 aplikasi yg saling berkomunikasi maka salah satu aplikasi harus ada yg memulai dan yang lain menunggu / siap merespon komunikasi. Pihak yang aktif memulai di sebut sebagai client dan pihak yang passive menunggu (siap merespon/melayani) disebut server.
Berikut adalah langkah-langkah membuat komunikasi socket di server:
1. Buatlah sebuah objek ServerSocket. Konstruktor ServerSocket memerlukan port number (1024-65535) sebagai argumen.
2. Server dalam kondisi menunggu (listen). Operasi ini pada intinya menunggu permintaan koneksi dari sisi client.
3. Buat input dan output stream. Stream ini digunakan untuk berkomunikasi dengan client. Objek InputStreamReader digunakan untuk menerima respon dari client. Sedangkan PrintWriter untuk mengirimkan data ke client.
4. Saling berkirim dan menerima pesan. Gunakan method readLine() untuk menerima data dan method println() untuk mengirim data.5. Menutup socket
1. Bangun koneksi ke server. Buatlah sebuah objek Socket, yang mempunyai konstruktor dengan dua argumen:
• IP address server
• Port Number
Port number untuk server dan client haruslah sama.
2. Buat input dan output stream. Stream ini digunakan untuk berkomunikasi dengan client. Objek InputStreamReader digunakan untuk menerima respon dari client. Sedangkan PrintWriter untuk mengirimkan data ke client.
3. Saling berkirim dan menerima pesan. Gunakan method readLine() untuk menerima data dan method println() untuk mengirim data.
4. Menutup socket
Oke langsung saja ke codingannya ya!!
Class ChatServer
• Perintah import java.io.*; adalah input untuk memasukkan data dari peralatan input seperti keyboard dan output adalah perintah untuk menampilkan hasil data kepada pengguna.
• Perintah import java.net.*; adalah perintah dalam Program Java berisi kelas-kelas dan interfaces yang memperbolehkan program java untuk memanipulasi angka, tanggal, karakter dan juga string.
• Lalu kita buat nama kelas nya yaitu ChatServer
• Perintah private static ServerSocket servSock; ServerSocket, class ini merupakan ciri khas bahwa class tersebut diperuntukkan untuk server. Ketika client tidak membutuhkan class tersebut.
• Perintah private static final int PORT = 1234 ; merupakan Konstruktor ServerSocket yang memiliki nomor port 1234 dan harus sama dengan client agar saling terhubung.
• Selanjutnya kita buat method utama pada kelasnya.
• Perintah System.out.println("Opening Port.....\n"); adalah akan menampilkan bacaan Opening Port pada class Client.
• Perintah try{ biasanya digunakan dalam suatu block program. Keyword ini digunakan untuk mencoba menjalankan block program kemudian mengenai sasaran dimana munculnya kesalahan yang ingin diproses.
• Perintah servSock = new ServerSocket(PORT);
}catch(IOException e){
System.out.println("Unable to attach to port");
Pada blok try catch ini digunakan untuk membinding ke port tertentu, karena PORT telah didefinisikan dengan 1234 maka port yang dituju adalah port 1234. Apabila gagal membuat port maka akan dicatch error nya dan akan menampilkan pesan “Unable to attach to portt!!!”
• Perintah System.exit(1); perintah merupakan akan keluar dari program.
• Perintah do{
run();
}while(true);
Looping di atas akan terus menerus dijalankan karena kondisi dari do while tersebut bernilai true dan hanya bisa keluar dari looping dengan menggunakan system.exit. Karena didalam loop terdapat method run(), maka method tersebut akan dipanggil secara berulang-ulang.
• Kemudian buat method utama run untuk menjalankan program
• Perintah Socket link = null ; untuk membat client socket terlebih dahulu lalu menjalankan blok try catch.
• Perintah try{
link = servSock.accept();
Variabel Socket link akan di assign servSock.accept() dimana code tersebut digunakan untuk mencoba menerima koneksi socket dari client
• Perintah BufferedReader in = new BufferedReader(new
InputStreamReader(link.getInputStream()));
PrintWriter out = new PrintWriter(link.getOutputStream(),true);
Lalu kita akan membuat objek BufferedReader in dengan mengirim parameter berupa InputStreamReader(link.getInputStream()). Dan juga membuat objek PrintWriter bernama out dengan mengirim parameter link.getOutputStream(), true. Code ini berfungsi untuk membuat stream input/output dari client socket.
• Perintah int numMessages=0; merupakan inisialisasai variabel numMessages yang bernilai 0 dan tipe data integer
• Perintah String message=in.readLine(); merupakan inisialisasi variabel message dengan tipe data string dan menggunakan method in.readLine() untuk menampung isi data
• Perintah while(!message.equals("close")){ merupakan perintah message yang akan menampilkan jika pesan yang dikirim client bukan kata "close"
• Perintah System.out.println("Message received"); numMessages++; out.println("Message " + numMessages + ":" + message); message = in.readLine();
out.println(numMessages + " message received."); merupakan perintah yang akan menampilkan pesan masuk, dan akan menampilkan nomor pesan yang masuk, dan untuk berkirim dan menerima pesan. Dan menggunakan method in.readLine() untuk menerima data, dan method println() untuk mengirim data.
• Perintah }catch(IOException e){ e.print StackTrace(); finally{ try{ System. out.println("*********Closing Connection****"); link.close(); pada blok catch ini block catch akan dieksekusi lebih dahulu jika terjadi exception pada blok try, jika tidak maka akan diabaikan dan akan mengeksekusi blok finally. dan akan menampilkan closing connection.
• Perintah catch(IOException e){ System. out.println("Unable to disconnect"); System .exit(1); adalah perintah yang akan dieksekusi jika client tidak terkoneksi ke server. kemudian akan menampilkan pesan "Unable to disconnect", kemudian keluar.
Class ChatClient
• Perintah import java.net.*; adalah perintah dalam Program Java berisi kelas-kelas dan interfaces yang memperbolehkan program java untuk memanipulasi angka, tanggal, karakter dan juga string.
• Lalu kita buat nama kelasnya yaitu ChatClient
• Perintah private static String strHost ; lalu kita membuat method utama dengan nama strHost
• Perintah private static InetAddress host ; method untuk host untuk mendapatkan ip address server dan ip address server
• Perintah private static final int PORT = 1234; merupakan Konstruktor ServerSocket yang memiliki nomor port 1234 dan harus sama dengan client agar saling terhubung.
• Lalu kita buat method utama pada kelasnya.
• Perintah try{ biasanya digunakan dalam suatu block program. Keyword ini digunakan untuk mencoba menjalankan block program kemudian mengenai sasaran dimana munculnya kesalahan yang ingin diproses.
• Perintah host = InetAddress.getLocalHost();
}catch(UnknownHostException e){
System.out.println("Host ID Not Found");
System.exit(1);
Pada blok catch ini akan mengeksekusi jika client tidak terkoneksi ke server dan akan tampil tulisan "Host ID Not Found" kemudian keluar.
• Kemudian buat method run untuk menjalankan program
• Perintah Socket link = null ; untuk membat client socket terlebih dahulu lalu menjalankan blok try catch.
• Perintah try{
link = new Socket(host, PORT);
Digunakan untuk membagun koneksi server dan client untuk menghubungkan port dan ip address.
• Perintah BufferedReader in = new BufferedReader(new
InputStreamReader(link.getInputStream()));
PrintWriter out = new PrintWriter(link.getOutputStream(),true);
Lalu kita akan membuat objek BufferedReader in dengan mengirim parameter berupa InputStreamReader(link.getInputStream()). Dan juga membuat objek PrintWriter bernama out dengan mengirim parameter link.getOutputStream(), true. Code ini berfungsi untuk membuat stream input/output dari client socket.
• Perintah BufferedReader userEntry = new BufferedReader(new
InputStreamReader(System.in));
String message, response ;
Lalu kita akan membuat objek BufferedReader in dengan mengirim parameter berupa InputStreamReader(System.in)). Code ini berfungsi untuk membuat stream input/output dari client socket. Dan menginisialisasi variabel message, response menggunakan tipe data string.
• Perintah do{ System.out.print("Enter message : "); message = userEntry. readLine(); out.println(message); merupakan perulangan untuk memasukkan atau mengirim pesan dan akan menampilkan "Enter Message" ketika user memasukkan pesan.
• Perintah response = in.readLine(); System.out. println("SERVER " + response); }while(!message .equals("close")); merupakan pesan untuk menerima data dan akan menampilkan respon pesan dari server dan perulangan akan terus berjalan sebelum sampai ada kata "close".
• Perintah catch(IOException e){
e.printStackTrace();
}
finally{
System.out.println("closing connection");
link.close();
}
catch(IOException e){
System.out.println("Unable to disconnect!");
System.exit(1);
}
}
Apabila pada block try sebelumnya terdapat error maka akan dicatch dan akan dijalankan e.printStackTrace() yang digunakan untuk menampikan bagian mana dari inputan yang mengalami error. Sedangkan Pada block finally akan tetap dijalankan walaupun ada error ataupun tidak. Pada block ini akan menampilkan pesan menutup koneksi kemudian akan menjalankan link.close() yang berfungsi untuk menutup koneksi, apabila ada error dalam menutup koneksi akan di catch dan akan menampilkan pesan tidak dapat memutus koneksi dan akan mengakhiri program secara paksa dengan system.close().
Ouput Program


Komentar
Posting Komentar