Chat Networking Programming (MultiClient dan Single Server)
Assalamualaikum Warahmatullahi Wabaraktuh...
Hello Reader, sebelumnya saya sudah menjelaskan tentang chat nerwoking programming (single client dan single server) kali ini saya akan menjelaskan source code multi client dan single server.
Class Server Multi
- import java.io.*; adalah input untuk memasukkan data dari peralatan input seperti keyboard dan output adalah perintah untuk menampilkan hasil data kepada pengguna.
- 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.
- public class ChatServerMulti{ selanjutnya kita beri nama kelas yaitu ChatServerMulti
- 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.
- public static void main(String args[]) throws IOException{
System.out.println("Opening Port.....\n");
Selanjutnya kita buat method utamanya setelah itu akan menampilkan "Opening Port.....\n" pada kelas server.
- try{
- servSock = new ServerSocket(PORT);
}catch(IOException e){
System.out.println("Unable to attach to port");
System.exit(1);
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!!!” dan akan keluar dari program.
- Socket client = servSock.accept(); Variabel Socket link akan di assign servSock.accept() dimana code tersebut digunakan untuk mencoba menerima koneksi socket dari client
- ClientHandler handler = new ClientHandler(client);
- handler.start();
}while(true);
Selanjutnya kita akan membuat kelas baru yaitu ClientHandler untuk menghubungkan antara server dan client, lalu kelas tersebut akan berjalan jika bernilai true.
- class ClientHandler extends Thread{
private Socket client ;
private BufferedReader in ;
private PrintWriter out ;
public ClientHandler(Socket socket){
client = socket ;
Di kelas ClientHandler menggunakan kelas soket untuk menghubungkan dengan client, kelas BufferedReader in untuk membaca inputan data dan kelas PrintWriter out untuk menampilkan pesan atau respon dari client nantinya.
- try{
in = new BufferedReader(new
InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream(),true);
}catch(IOException e){
e.printStackTrace();
}
Pada blok catch try 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. Kemudian akan dicatch lagi dan akan dijalankan e.printStackTrace() yang digunakan untuk menampikan bagian mana dari inputan yang mengalami error.
- try{
String received ;
do{
received = in.readLine();
System.out.println(received);
out.println("ECHO : " + received);
}while(!received.equals("QUIT"));
}catch(IOException e){
e.printStackTrace();
}
Selanjutnya pada blok try catch ini kita lakukan inisialisasi variabel menggunakan tipe data string, pesan yang diterima akan dibaca menggunakan method readline() dan akan menampilkan teks ECHO : " + received. Nah selanjutnya disini ada perulangan yanga akan terus berjalan sampai ada kata QUIT dan akan dicatch lagi dan akan dijalankan e.printStackTrace() yang digunakan untuk menampikan bagian mana dari inputan yang mengalami error.
- finally{
try{
if (client != null){
System.out.println("Closing down connection");
client.close();
}
}catch(IOException e){
e.printStackTrace();
Sedangkan pada block finally akan tetap dijalankan walaupun ada error ataupun tidak. Jika bernilai null, maka akan menampilkan pesan Closing down connection kemudian akan menjalankan link.close() yang berfungsi untuk menutup koneksi, apabila ada error dalam menutup koneksi akan di catch dan akan dijalankan e.printStackTrace() yang digunakan untuk menampikan bagian mana dari inputan yang mengalami error.
Class Client Multi
Penjelasan :
- import java.io.*; adalah input untuk memasukkan data dari peralatan input seperti keyboard dan output adalah perintah untuk menampilkan hasil data kepada pengguna.
- 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.
- public class ChatClientMulti{ : selanjutnya kita beri nama kelas project dengan ChatClientMulti
- private static InetAddress host : adalah untuk menerima ip address dari host
- private static final int PORT = 1234 ; merupakan Konstruktor ServerSocket yang memiliki nomor port 1234 dan harus sama dengan client agar saling terhubung.
- private static Socket link ; merupakan mekanisme untuk program server untuk mendengarkan klien dan membuat koneksi dengan mereka.
- private static BufferedReader in ; selanjutnya kita membuat kelas BufferedReader, ini merupakan stream karekter input yang telah terbuffer
- private static PrintWriter out ; adalah Stream output yang berisi method println() dan print()
- private static BufferedReader keyboard ; adalah kelas untuk menerima inputan dari keyboard.
- public static void main(String args[]){ selanjutnya kita membuat method utamanya.
- try{ biasanya digunakan dalam suatu block program. Keyword ini digunakan untuk mencoba menjalankan block program kemudian mengenai sasaran dimana munculnya kesalahan yang ingin diproses.
- host = InetAddress.getLocalHost(); syntax ini menyatakan bahwa objek host di beri nilai yaitu InetAddress.getLocalHost() .
- link = new Socket(host,PORT); Membuat sebuah stream socket baru dan juga koneksi ke suatu nomor port tertentu pada sebuah komputer berdasarkan namanya.
- in = new BufferedReader(new
InputStreamReader(link.getInputStream()));
out = new PrintWriter(link.getOutputStream(),true);
disini method reader() akan melakukan proses pembacaan data dari karakter inputan dimana datanya dikonveksi dari byte ke karakter yang selanjutnya akan ditampilkan menggunakan method print() jika bernilai true.
- keyboard = new BufferedReader(new InputStreamReader(System.in));
String message, response;
inputStream dapat diisi dengan System.in. Sehingga untuk membuat objek BufferedReader yang dapat terhubung dengan keyboard yaitu dengan melakukan pemanggilan terhadap method read() maupun readline(). Selanjutnya pesan dan respon yang akan ditampilkan menggunakan tipe data string yang bisa menampung banyak karakter.
- do{
System.out.print("Enter message(QUIT to exit)");
message = keyboard.readLine();
out.println(message);
response = in.readLine();
System.out.println(response);
Selanjutnya akan tampil teks Enter message(QUIT to exit di class client dan akan menerima inputan dari keyboard menggunakan method readline(), yang selanjutnya inputan atau pesan tersebut akan ditampilkan. Nah selanjutnya method readline() akan membaca respon dan juga akan menampilkan hasil dari respon.
- }while(!message.equals("QUIT"));
}catch(UnknownHostException e){
System.out.println("Host ID not found!");
}
catch(IOException e){
e.printStackTrace();
}
- finally{
try{
if (link != null){
System.out.println("Closing down connection");
link.close();
}
}
catch(IOException e){
e.printStackTrace();
}
Sedangkan Pada block finally akan tetap dijalankan walaupun ada error ataupun tidak. Jika bernilai null, maka 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 dijalankan e.printStackTrace() yang digunakan untuk menampikan bagian mana dari inputan yang mengalami error.
Output Program :


Komentar
Posting Komentar