Chat Multi Client

 Chat Multi Client

Assalamu'alaikum wr wb

Hai teman-teman!

Kali ini saya akan mengenalkan materi Chat Multi Client. berbeda dengan blok sebelumnya yang client-nya tungal, diblok ini kita dapat menggunakan lebih dari satu client. Chat Multi Client ini menggunakan 1 server untuk menghubungkan beberapa Client, prinsip nya mirip dengan chat pada aplikasi messengger. Tanpa basa basi langsung saja saya jelaskan.

Program ChatServerMulti 


Penjelasan :

  1. import java.io.*; merupakan perintah Input Output. Input merupakan perintah untuk memasukan data dari peralatan input , sedangkan output merupakan perintah atau berfungsi menampilkan data kepada pengguna.
  2. import java.net.*; Merupakan perintah Program Java berisi kelas-kelas  yang memperbolehkan program berkomunikasi melewati jaringan.
  3. public class ChatServerMulti adalah nama class, yang diberi nama ChatServerMulti 
  4. private static ServerSocket servSock; adalah method untuk server dengan nama servSock.
  5. private static final int PORT = 1234 ; Buatlah sebuah objek ServerSocket. Konstruktor ServerSocket memerlukan port number sebagai argumen.
  6. public static void main(String args[]) adalah method utama
  7. System.out.println("Opening Port.....\n"); adalah perintah untuk menampilkan tulisan "Opening Port....."
  8. try{servSock = new ServerSocket(PORT);} adalah Server dalam kondisi menunggu (listen). Operasi ini pada intinya menunggu permintaan koneksi dari sisi client.
  9. catch(IOException e){System.out.println("Unable to attach to port"); System.exit(1);} adalah perintah yang dieksekusi jika tidak terhubung ke server, lalu keluar dari program.
  10. Kode dibawah  merupakan perintah untuk menunggu client terhubung / connect pada server. Selama masih ada client yang ingin masuk maka server tetap bisa menerima client tersebut.
    • do{ 
    • Socket client = servSock.accept(); 
    • ClientHandler handler = new ClientHandler(client); 
    • handler.start();
    • }while(true);
    • }
  11. class ClientHandler extends Thread berfungsi sebagai penerima setiap Socket atau Client yang telah diterima server, Syarat untuk diterima oleh server adalah client harus memiliki alamat IP dan port dari server agar dapat berhubungan dan terkoneksi dengan server dan client lainnya. Kemudian beberapa client lebih dari satu dapat diterima oleh server itu menggunakan objek dari class Thread.  Berikut tread untuk mensetup referensi ke socket :
    • class ClientHandler extends Thread{
    • private Socket client ;
    • private BufferedReader in ;
    • private PrintWriter out ;
    • public ClientHandler(Socket socket){
    • client = socket ;
    • try{
    • in = new BufferedReader(new
    • InputStreamReader(client.getInputStream()));
    • out = new PrintWriter(client.getOutputStream(),true);
    • }catch(IOException e){
    • e.printStackTrace();
    • }
    • }
    • .....
  12. public void run() merupakan method run()
  13. try merupakan blok yang akan dijakankan jika
  14. String received ; merupakan deklarasi variabel recived dengan tipe data String.
  15. Kode dibawah merupakan perintah untuk mensetup stream untuk masukan dari received. Setelah itu program akan mengirimkan pesan ke server dan menunggu server merespon pesan tersebut. Kode akan berjalan selama message tidak menampilkan QUIT. Berikut Programnya :
    • do{
    • received = in.readLine();
    • System.out.println(received);
    • out.println("ECHO : " + received);
    • }while(!received.equals("QUIT")); 
  16. catch(IOException e) merupakan blok yang akan dijalankan jika objek link bernilai null.
  17. e.printStackTrace(); membantu pemrogram untuk memahami di mana masalah sebenarnya terjadi.
  18. finally block ini akan dijalankan setelah block try selesai di eksekusi
  19. try merupakan blok yang akan dijalankan jika objek client tidak bernilai null (maksudnya diinputkan tulisan "QUIT"), maka akan muncul tulisan "Closing down connection". kemudian soket akan tertutup. berikut isi blok try :
    • if (client != null){
    • System.out.println("Closing down connection");
    • client.close();}
  20. catch(IOException e) merupakan blok yang akan dijalankan jika objek link bernilai null.
  21. e.printStackTrace(); membantu pemrogram untuk memahami di mana masalah sebenarnya terjadi.

Program ChatClientMulti 

Penjelasan :
  1. import java.io.*; merupakan perintah Input Output. Input merupakan perintah untuk memasukan data dari peralatan input , sedangkan output merupakan perintah atau berfungsi menampilkan data kepada pengguna.
  2. import java.net.*; Merupakan perintah Program Java berisi kelas-kelas  yang memperbolehkan program berkomunikasi melewati jaringan.
  3. public class ChatClientMulti adalah nama class, yang diberi nama ChatClientMulti 
  4. private static InetAddress host ; adalah method untuk host untuk mendapatkan ip address server dan ip address server.
  5. private static final int PORT = 1234; merupakan method untuk mendeklarasikan port number untuk client.
  6. private static Socket link ; merupakan method untuk soket dengan nama link.
  7. private static BufferedReader in ; merupakan method dari BufferedReader  yang berfungsi untuk mengambil input dari client dengan nama in
  8. private static PrintWriter out ; sebuah class yang membantu program java untuk mencetak secara langsung kedalam class File yang telah dibuat
  9. private static BufferedReader keyboard ; merupakan method dari BufferedReader  yang berfungsi untuk mengambil input dari client dengan nama keyboard
  10. public static void main(String args[]) merupakan method utama
  11. try merupakan block yang akan dieksekusi jika client terkoneksi ke server
  12. host = InetAddress.getLocalHost(); merupakan InetAddress untuk menerima alamat Ip dari localhost.
  13. link = new Socket(host,PORT); digunakan untuk membagun koneksi server dan client untuk menghubungkan port dan ip address.
  14. in = new BufferedReader(new InputStreamReader(link.getInputStream())); out = new PrintWriter(link.getOutputStream(),true); keyboard = new BufferedReader(new InputStreamReader(System.in));  adalah 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.
  15. String message, response; merupakan inisialisasi variabel message dan response yang memiliki tipe data String
  16. do merupakan blok yanga akan dijalankan apa bila blok try benar.
  17. System.out.print("Enter message(QUIT to exit)"); perintah untuk menampilkan tulisan "Enter message(QUIT to exit)"
  18. message = keyboard.readLine(); adalah perintah untuk mendapatkan data dari inputan pesan yang masuk.
  19. out.println(message); adalah perintah yang digunakan untuk saling berkirim dan menerima pesan. Method println() berfungsi untuk mengirim data.
  20. response = in.readLine(); digunakan untuk untuk menerima data pesan dari server.
  21. System.out.println(response); digunakan untuk untuk menampilakan data dari variabel response.
  22. while(!message.equals("QUIT")); Blok while akan dikerjakan apa bila client mengitputkan teks "QUIT", maka akan mengeksekusi blok finally.
  23. catch(UnknownHostException e){System.out.println("Host ID not found!");}  merupakan blok yang akan dieksekusi apabila server tidak ditemukan. Maka program akan menampilkan tulisan "Host ID not found!",kemudian keluar. 
  24. catch(IOException e) merupakan blok yang akan dijalankan jika objek link bernilai null.
  25. e.printStackTrace(); membantu pemrogram untuk memahami di mana masalah sebenarnya terjadi.
  26. finally block ini akan dijalankan setelah block try selesai di eksekusi
  27. try merupakan blok yang akan dijalankan jika objek link tidak bernilai null (maksudnya diinputkan tulisan "QUIT"), maka akan muncul tulisan "Closing down connection". kemudian soket akan tertutup. berikut isi blok try :
    • if (link != null){
    • System.out.println("Closing down connection");
    • link.close();}
  28. catch(IOException e) merupakan blok yang akan dijalankan jika objek link bernilai null.
  29. e.printStackTrace(); membantu pemrogram untuk memahami di mana masalah sebenarnya terjadi.

Output


Sekian Penjelasan dari saya, semoga teman-teman dapat memahaminya.

Wassalamu'alaikum Wr Wb

Komentar

Postingan populer dari blog ini

Pengenalan Network Programming (Port & Client Server)