Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java

12
Membuat Aplikasi Client Server Dengan Bahasa Pemrograman Java Oleh : Yohana Damayanti (061130701312) 6CD JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG

description

 

Transcript of Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java

Page 1: Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java

Membuat Aplikasi Client Server

Dengan Bahasa Pemrograman Java

Oleh :

Yohana Damayanti

(061130701312)

6CD

JURUSAN TEKNIK KOMPUTER

POLITEKNIK NEGERI SRIWIJAYA

PALEMBANG

Page 2: Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java

1.1 PENDAHULUAN

Bahasa pemrograman java banyak diaplikasikan dalam berbagai program

maupun aplikasi yang berbasis PC atau mobile. Salah satu penerapannya adalah pada

program chatting, dipilihnya bahasa java sebagai bahasa pembuatan program ini

dikarenakan dalam java memiliki kelas thread sebagai kelas default yang tidak

dimiliki oleh bahasa pemrograman lain. Program chat ini terdiri dari dua sisi, yaitu

sisi client dan server. Dalam pembuatan aplikasi chatting ini, kita harus menyiapkan

dua buah PC/Laptop atau lebih untuk satu dijadikan sebagai server, dan yang lainnya

dijadikan sebagai Client.

1.2 PEMBAHASAN

1.2.1 Hasil runing program

1.2.1.1 Server

Gambar 1.1 Hasil Running Program Server Menunggu Client

Page 3: Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java

Gambar 1.2 Hasil Running Program Ketika Server Menerima Client Baru

Gambar 1.3 Hasil Running Program dengan input obrolan dari client 1,2 dan 3

Page 4: Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java

1.2.1.2 Client

Gambar 1.4 Hasil Running Tampilan Pada Client 1

Gambar 1.5 Hasil Running Tampilan Pada Client 2

Gambar 1.6 Hasil Running Tampilan Pada Client 3

Page 5: Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java

Gambar 1.7 Hasil Running Program pada Client 1 melakukan chatting

Gambar 1.8 Hasil Running Program pada Client 2 melakukan chatting

Gambar 1.9 Hasil Running Program pada Client 3 melakukan chatting

Page 6: Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java

1.2.2 Pembahasan Source Code

1.2.2.1 Pembahasan kelas Server

public class iniserver {private static ServerSocket serverSocket;private static final int PORT = 1111;

Kode diatas merupakan perintah agar socket server hanya dapat diakses olehsendiri. Port = 1111 merupakan port yang disiapkan pada server diatas. iniservermerupakan nama kelas program javanya.

public static void main(String[] args) throws IOException {try {

serverSocket = new ServerSocket(PORT);System.out.println("Server berjalan, menunggu client...");

} catch (IOException ioEx) {System.out.println("\nTidak dapat mensetup port!");System.exit(1);

}

Kode diatas merupakan perintah untuk membuat sebuar socket serverbernama serverSocket. “Server berjalan, menunggu client…” akan muncul ketikaprogram dijalankan. "\nTidak dapat mensetup port!" akan muncul ketika programdijalankan saat masih ada program yang sama yang dijalankan.

do {

Socket client = serverSocket.accept();System.out.println("\nClient baru diterima.\n");

ClientHandler handler = new ClientHandler(client);handler.start();

} while (true);

Kode diatas merupakan perintah untuk menunggu client terhubung / connectpada server. Selama masih ada client yang ingin masuk maka server tetap bisamenerima client tersebut.

class ClientHandler extends Thread {

private Socket client;private Scanner input;private PrintWriter output;

Page 7: Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java

private Scanner userEntry;

public ClientHandler(Socket socket) {client = socket;

try {input = new Scanner(client.getInputStream());output = new PrintWriter(client.getOutputStream(), true);userEntry = new Scanner(System.in);

} catch (IOException ioEx) {//ioEx.printStackTrace();

Kode diatas merupakan thread untuk mensetup referensi ke socket. Inputmerupakan Scanner untuk mendapatkan input. Output merupakan perintah agarmenerima masukan dari keyboard.

public void run() {String received;String message;do {

received = input.nextLine();System.out.println(received);System.out.print("");

System.out.print("server: ");message = userEntry.nextLine();output.println(message);} while (!received.equals("QUIT"));

Kode diatas berfungsi untuk menerima dan mengirimkan pesan pada input streamsocket. Program diatas akan terus berjalan selama client tidak mengirimkan pesanQUIT.

try {if (client != null) {System.out.println("Menutup

koneksi...");client.close();

}} catch (IOException ioEx) {

System.out.println("Penutupan koneksigagal!");

Kode diatas berfungsi untuk mengakhiri program.

1.2.2.2 Pembahasan kelas Client

Page 8: Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java

public class Client {private static InetAddress host;private static final int PORT = 1111;

public static void main(String[] args) {try {

host = InetAddress.getLocalHost();} catch (UnknownHostException uhEx) {

System.out.println("\nHost ID tidakditemukan!\n");

System.exit(1);}sendMessages();

}

Kode diatas merupakan perintah agar socket server hanya dapat diakses olehsendiri. Port = 1111 merupakan port yang disiapkan pada server diatas. clientmerupakan nama kelas program javanya.

private static void sendMessages() {Socket socket = null;try {

socket = new Socket(host, PORT);Scanner networkInput = new

Scanner(socket.getInputStream());PrintWriter networkOutput = new

PrintWriter(socket.getOutputStream(),true);

Scanner userEntry = new Scanner(System.in);String message, response;do {

System.out.print("klien 1: ");message = userEntry.nextLine();networkOutput.println(message);response = networkInput.nextLine();System.out.println("\nSERVER> " + response);

} while (!message.equals("QUIT"));

Kode diatas merupakan perintah untuk mensetup stream untuk masukan darikeyboard, yang kemudian di scan oleh scanner UserEntry dan di simpan dalam stringmessage. Setelah itu program akan mengirimkan pesan ke server dan menungguserver merespon pesan tersebut. Kode akan berjalan selama message tidakmenampilkan QUIT.

try {System.out.println("\nMenutup

koneksi...");socket.close();

} catch (IOException ioEx) {System.out.println("Gagal menutup

koneksi!");System.exit(1);

Page 9: Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java

Kode diatas merupakan perintah untuk mengakhiri program ketika user akankeluar.

1.3 Lampiran1.3.1 Kelas Server

Berikut adalah listing program aplikasi chatting kelas server:

import java.io.*;import java.net.*;import java.util.Scanner;

public class iniserver {

private static ServerSocket serverSocket;private static final int PORT = 1111;

public static void main(String[] args) throws IOException {try {

serverSocket = new ServerSocket(PORT);System.out.println("Server berjalan, menunggu

client...");} catch (IOException ioEx) {

System.out.println("\nTidak dapat mensetup port!");System.exit(1);

}do {

//Menunggu koneksi dari client...Socket client = serverSocket.accept();System.out.println("\nClient baru diterima.\n");

//Buat thread untuk menangani komunikasi dengan clientini

//lewatkan socket yang relevan ke contructor darithread ini

ClientHandler handler = new ClientHandler(client);handler.start(); //menjalankan thread yang telah

dibuat} while (true);

}}

class ClientHandler extends Thread {

private Socket client;private Scanner input;private PrintWriter output;private Scanner userEntry;

public ClientHandler(Socket socket) {//Set up referensi ke socket yang berasosiasi...

Page 10: Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java

client = socket;

try {input = new Scanner(client.getInputStream());output = new PrintWriter(client.getOutputStream(),

true);userEntry = new Scanner(System.in);

} catch (IOException ioEx) {//ioEx.printStackTrace();

}}

public void run() {String received;String message;do {

//Terima pesan dari client pada input stream socket...received = input.nextLine();System.out.println(received);System.out.print("");

System.out.print("server: ");message = userEntry.nextLine();

//Kirim pesan (message)ke client pada output streamsocket...

//Terima respon dari client pada stream input socket...output.println(message);

//Ulangi sampai client mengirimkan pesan 'KELUAR'...} while (!received.equals("KELUAR"));

try {if (client != null) {

System.out.println("Menutup koneksi...");client.close();

}} catch (IOException ioEx) {

System.out.println("Penutupan koneksi gagal!");}

}}

1.3.2 Kelas Client

Berikut adalah listing program aplikasi chatting kelas client:

import java.io.*;import java.net.*;import java.util.Scanner;

Page 11: Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java

public class Client {

private static InetAddress host;private static final int PORT = 1111;

public static void main(String[] args) {try {

host = InetAddress.getLocalHost();} catch (UnknownHostException uhEx) {

System.out.println("\nHost ID tidak ditemukan!\n");System.exit(1);

}sendMessages();

}

private static void sendMessages() {Socket socket = null;try {

socket = new Socket(host, PORT);Scanner networkInput = new

Scanner(socket.getInputStream());PrintWriter networkOutput = new

PrintWriter(socket.getOutputStream(), true);

//Set up stream untuk masukan dari keyboard...Scanner userEntry = new Scanner(System.in);String message, response;do {

System.out.print("klien 1: ");message = userEntry.nextLine();

//Kirim pesan (message)ke server pada output streamsocket...

//Terima respon dari server pada stream inputsocket...

networkOutput.println(message);response = networkInput.nextLine();

//Tampilkan respon dari server...System.out.println("\nSERVER> " + response);

} while (!message.equals("KELUAR"));} catch (IOException ioEx) {

//ioEx.printStackTrace();} finally {

try {System.out.println("\nMenutup koneksi...");socket.close();

} catch (IOException ioEx) {System.out.println("Gagal menutup koneksi!");System.exit(1);

}}

}

Page 12: Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java

}