Chat Network Programming

 Chat Network Programming

Assalamu'alaikum wr wb

Hai teman-teman!

Kali ini saya akan mengenalkan materi Chat network programming. Tanpa basa basi langsung saja saya jelaskan.

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. Berikut adalah program untuk membuat komunikasi socket di server:

Program ChatServer

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 ChatServer adalah nama class, yang diberi nama ChatServer
  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. do{run();} while(true); adalah perintah untuk menjalankan method run() apabila terhubung ke server
  11. private static void run() merupakan method untuk berkomunikasi dengan client dengan nama method run.
  12. Socket link = null ; merupakan deklarasi nilai awal untuk objek link.
  13. link = servSock.accept(); merupakan perintah agar Server dalam kondisi menunggu (listen). Operasi ini pada intinya menunggu permintaan koneksi dari sisi client.
  14. BufferedReader in = new BufferedReader(new InputStreamReader(link.getInputStream())); PrintWriter out = new PrintWriter(link.getOutputStream(),true); 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. int numMessages=0; merupakan inisialisasi variabel numMessages yang bernilai 0 dan tipe data integer.
  16. String message=in.readLine(); merupakan inisialisasi variabel message yang digunakan untuk menapung atau menerima data karena menggunakan method readLine().
  17. while(!message.equals("close")) adalah perintah yang tampil jika pesan yang dikirim client bukan kata "close".
  18. System.out.println("Message received"); merupakan perintah yang tampil jika ada pesan yang masuk.
  19. numMessages++; perintah yang digunakan untuk memberi nomor pesan yang masuk.
  20. out.println("Message " + numMessages + ":" + message); message = in.readLine(); adalah perintah yang digunakan untuk menerima pesan. Gunakan method println() untuk mengirim data.
  21. catch(IOException e){e.printStackTrace();} block catch akan dieksekusi lebih dahulu jika terjadi exception pada blok try, jika tidak maka akan diabaikan dan akan mengeksekusi blok finally.
  22. blok finally berisi
  • try{System.out.println("*********Closing Connection****");link.close();} adalah perintah yang akan dieksekusi jika ada pesan "close" masuk, kemudian mengirim pesan "*********Closing Connection****" pada client kemudian menurup soket.
  • 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.

Program ChatClient

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 ChatClient adalah nama class, yang diberi nama ChatClient 
  4. private static String strHost ; adalah method dengan nama strHost.
  5. private static InetAddress host ;  adalah method untuk host untuk mendapatkan ip address server dan ip address server.
  6. private static final int PORT = 1234; merupakan method untuk mendeklarasikan port number untuk client.
  7. public static void main(String args[]) merupakan method utama
  8. try{ host = InetAddress.getLocalHost();} blok try akan dieksekusi jika client terkoneksi ke server.
  9. catch(UnknownHostException e){System.out.println("Host ID Not Found"); System.exit(1);} block catch akan dieksekusi jika client tidak terkoneksi ke server dan akan tampil tulisan "Host ID Not Found" kemudian keluar.
  10. run(); menjalankan method run().
  11. private static void run() merupakan method yang digunakan agar server terkoneksi dengan client sehingga client dapat mengirim pesan dan menerima balasan. Nama method ini adalah run.
  12. Socket link = null ; merupakan deklarasi nilai awal untuk objek link.
  13. link = new Socket(host, PORT); digunakan untuk membagun koneksi server dan client untuk menghubungkan port dan ip address.
  14. BufferedReader in = new BufferedReader(new InputStreamReader(link.getInputStream()));
  15. PrintWriter out = new PrintWriter(link.getOutputStream(),true); BufferedReader userEntry = 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.
  16. do{ merupakan perulangan untuk memasukkan atau mengirim pesan
  17. System.out.print("Enter message : "); digunakan untuk menampilkan tulisan "Enter message : " ketika ingin memasukkan pesan.
  18. message = userEntry.readLine(); adalah perintah untuk mendapatkan data dari inputan pesan yang masuk.
  19. out.println(message); adalah perintah yang digunakan untuk mengirim data pesan ke server
  20. response = in.readLine();  digunakan untuk untuk menerima data pesan dari server.
  21. System.out.println("SERVER " + response); perintah yang digunakan untuk menapilkan tulisan "SERVER " dan data pesan yang dikirim tadi.
  22. while(!message.equals("close")); perulangan akan terus terjadi selama tidak ada kata "close" diinputkan.
  23. catch(IOException e){e.printStackTrace();} block catch akan dieksekusi lebih dahulu jika terjadi exception pada blok try, jika tidak maka akan diabaikan dan akan mengeksekusi blok finally.
  24. blok finally berisi
  • try{System.out.println("closing connection"); link.close();  adalah perintah yang akan dieksekusi jika ada pesan "close" masuk, kemudian mengirim pesan "closing connection" pada client kemudian menurup soket.
  • 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.

Output

  1. Jalankan terlebih dahulu program ChatServer.
  2. Kemudian jalankan program ChatClient di jendela Git Bash baru
  3. Maka kita bisa mengirim pesan dengan menginput pesan ke jendela Git Bash program ChatClient.
  4. bila kita masukkan kata "close" maka Program ChatClient akan tertutup dan akan muncul tulisan "*********Closing Connection****" di jendela Git Bash program ChatServer.


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

Wassalamu'alaikum Wr Wb


Komentar