Chat Server (Multi Client)!!!!!!!
Network ProgramMing Pembuatan Chat server dan Multi Client Dalam Mengirim Pesan dan Balasan!!!!
Hallo sobat coders,,,
Dalam kesempatan kali ini kita akan membahas tentang Chat Server Multi Client dalam berkirim Pesan. Menerima dan Membalas pesan. langsung saja kita mulai pembahasan nya berikut :
Dan berikut yang harus disiapkan
1.SourceCode Chat Server dan Multi Client
2.Aplikasi pengolah boleh menggunakan (sublime,VSCode,Netbeans)
3.Git Bush
langsung aja ke pembahasan nya yang pertama adalah membuat sourcecode di vscode atau dinetbeans bebas pengguna menggunakan apa
ChatServerMulti
import java.io.*;//(class input output dot all) untuk mengakses semua kelas input dan output
import java.net.*;//class net untuk mengakses semua kelas network/komunikasi jaringan yang ada
public class ChatServerMulti {
private static ServerSocket servSock;//membuat objek untuk serversocket dengan nama servsock
private static final int PORT = 1234;//membuat objek bernama port yang berisi nomor port
public static void main(String args[]) throws IOException {
//method main/utama yang menggunakan Method throws untuk Membaca Input Data String
System.out.println("Opening Port.....\n"); //menampilkan kata openign port
try { ////Blok try digunakan untuk menempatkan kode-kode program Java yang memungkinkan terjadinya exception.
servSock = new ServerSocket(PORT); //mengecek port server
} catch (IOException e) { //jika blok try error maka sistem akan menjalankan blok catch
System.out.println("Unable to attach to port");//dan akan menampilkan unable to attach to port
System.exit(1); //lalu sistem akan otomatis tertutup.
}
do {//perulangan do
Socket client = servSock.accept(); //untuk menghubungkan dan menunggu persetujuan dari client
ClientHandler handler = new ClientHandler(client);//penamaan handler untuk client
handler.start();//memulai handler
} while (true); //akan terus berulang jika bernilai true
}
}
class ClientHandler extends Thread { //membuat class turunan clienthandler
private Socket client; //definisi objek socket sebagai client
private BufferedReader in; // definisi untuk objek bufferedreader
private PrintWriter out; //definisi untuk objek printerwriter
public ClientHandler(Socket socket) { //class client
client = socket; //client samadengan socket
try {//memulai blok try
in = new BufferedReader(new InputStreamReader(client.getInputStream())); //mengambil inputan dari objek client
out = new PrintWriter(client.getOutputStream(), true); ///mengirimkan data ke client
} catch (IOException e) { //blok catch
e.printStackTrace();
}
}
public void run() { //membuat class baru yaitu run
try { //memulai blok try
String received; //membuat variabel dengan nama received dengan tipe string
do { //perulangan do
received = in.readLine(); // menginput data
System.out.println(received); //menampilkan data inputan received
out.println("ECHO : " + received);//menampilkan kata echo dan hasil inputan dari reveived
} while (!received.equals("QUIT")); //jika received sama dengan quit
} catch (IOException e) { //blok catch
e.printStackTrace();
} finally { //blok finally
try { //memulai blok try
if (client != null) { //jika client nya berisi null atau kosong
System.out.println("Closing down connection");//maka akan tampil Closing down connection
client.close(); //dan sistem akan langsung tertutup
}
} catch (IOException e) { //blok catch
e.printStackTrace();
}
}
}
}
ChatClientMulti
//import java.io.BufferedReader untuk mengambil input dari keyboard dan
//membaca input dari file dan jaringan.
//import java.io.IOException; // termasuk class bufferedreader.
//import java.io.InputStreamReader;// termasuk class bufferedreader.
//import java.io.PrintWriter; //class untuk input output untuk mengirim data ke client.
import java.io.*; //(class input output dot all) untuk mengakses semua kelas input dan output.
import java.net.*; //class net untuk mengakses semua kelas network/komunikasi jaringan yang ada.
public class ChatClientMulti { //nama class utama dan nama.
private static InetAddress host; //membuat objek untuk pembaca ip address (inetaddress) dengan nama host
private static final int PORT = 1234; //membuat objek bernama port yang berisi nomor port
private static Socket link; //membuat objek untuk socket dengan nama link
private static BufferedReader in; //Membaca input dari user melalui konsol dengan menggunakan BufferedReader
private static PrintWriter out; //membuat objek untuk printwriter dengan nama out untuk mengirim data ke client.
private static BufferedReader keyboard;//membuat objek baru untuk inputan bufferedreader untuk keyboard dengan nama keyboard.
public static void main(String args[]) { // method utama dari program dan akan di jalankan pertama kali oleh sistem.
try { //Blok try digunakan untuk menempatkan kode-kode program Java yang memungkinkan terjadinya exception.
host = InetAddress.getLocalHost(); //mengecek ip address di localhost komputer kita
link = new Socket(host, PORT); //membuat objek link dengan nama socket yang berisi ip dan nomor port.
in = new BufferedReader(new InputStreamReader(link.getInputStream())); //membuat objek in dari kelas bufferedReader
out = new PrintWriter(link.getOutputStream(), true);//akan menampilkan sesuatu dari objek link
keyboard = new BufferedReader(new InputStreamReader(System.in)); //membuat objek keyboard dari kelas bufferedReader
String message, response; //membuat variabel
do { //perulangan do
System.out.print("Enter message(QUIT to exit)"); //menampilkan "Enter message(QUIT to exit)"
message = keyboard.readLine(); //merupakan inputan dari keyboard
out.println(message);// akan menampilkan varibel message
response = in.readLine(); //menuliskan variabel respon
System.out.println(response);//menampilkan variabel respon
} while (!message.equals("QUIT")); //jika variabel message sama dengan kata quit
} catch (UnknownHostException e) { //Blok catch digunakan untuk menangkap kesalahan yang terjadi pada blok try.
System.out.println("Host ID not found!"); //menampilkan kalimat host id not found
} catch (IOException e) { //Blok catch digunakan untuk menangkap kesalahan yang terjadi pada blok try.
e.printStackTrace(); //pengecekan kesalahan kembali
} finally {
// Kode program pada blok finally akan selalu dijalankan, tidak peduli
//apakah terjadi eksepsi atau tidak.
try {
if (link != null) { //jika objek link bernilai null maka
System.out.println("Closing down connection"); //akan tampil kata closing down connetction
link.close();//lalu sistem akan otomatis tertutup
}
} catch (IOException e) { //jika blok try error maka akan dijalankan perintah catcth
e.printStackTrace();
}
}
}
}
Dan lihat hasil dan cara kerja dari program yang dibuat menggunakan gitbush seperti tampilan dibawah ini.
Komentar
Posting Komentar