Laporan program chatting1

11
TUGAS Membuat Program Chatting Oleh : M. Ichsan Barokah 061130701305 6CD JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG

Transcript of Laporan program chatting1

Page 1: Laporan program chatting1

TUGAS

Membuat Program Chatting

Oleh :

M. Ichsan Barokah

061130701305

6CD

JURUSAN TEKNIK KOMPUTER

POLITEKNIK NEGERI SRIWIJAYA

PALEMBANG

Page 2: Laporan program chatting1

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.

public class iniserver {

private static ServerSocket serverSocket;

private static final int PORT = 1111;

Kode diatas merupakan perintah agar socket server hanya dapat diakses oleh

sendiri. Port = 1111 merupakan port yang disiapkan pada server diatas. iniserver merupakan 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 server

bernama serverSocket. “Server berjalan, menunggu client…” akan muncul ketika program dijalankan. "\nTidak dapat mensetup port!" akan muncul ketika program

dijalankan 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 / connect

pada server. Selama masih ada client yang ingin masuk maka server tetap bisa menerima client tersebut.

class ClientHandler extends Thread {

private Socket client;

Page 3: Laporan program chatting1

private Scanner input;

private PrintWriter output;

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. Input

merupakan Scanner untuk mendapatkan input. Output merupakan perintah agar menerima 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 stream socket. Program diatas akan terus berjalan selama client tidak mengirimkan pesan QUIT.

try {

if (client != null) {

System.out.println("Menutup

koneksi...");

client.close();

}

} catch (IOException ioEx) {

System.out.println("Penutupan koneksi

gagal!");

Kode diatas berfungsi untuk mengakhiri program.

Page 4: Laporan program chatting1

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();

}

Kode diatas merupakan perintah agar socket server hanya dapat diakses oleh

sendiri. Port = 1111 merupakan port yang disiapkan pada server diatas. client merupakan 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 dari

keyboard, yang kemudian di scan oleh scanner UserEntry dan di simpan dalam string

message. Setelah itu program akan mengirimkan pesan ke server dan menunggu server merespon pesan tersebut. Kode akan berjalan selama message tidak

menampilkan QUIT.

try {

System.out.println("\nMenutup

koneksi...");

socket.close();

} catch (IOException ioEx) {

System.out.println("Gagal menutup

koneksi!");

Page 5: Laporan program chatting1

System.exit(1);

Kode diatas merupakan perintah untuk mengakhiri program ketika user akan keluar.

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 client

ini

//lewatkan socket yang relevan ke contructor dari

thread 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...

client = socket;

Page 6: Laporan program chatting1

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 stream

socket...

//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 7: Laporan program chatting1

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 stream

socket...

//Terima respon dari server pada stream input

socket...

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 8: Laporan program chatting1

Gambar Hasil Running Program Server Menunggu Client

Gambar Hasil Running Program Ketika Server Menerima Client Baru

Page 9: Laporan program chatting1

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

Gambar Hasil Running Tampilan Pada Client 1

Page 10: Laporan program chatting1

Gambar Hasil Running Tampilan Pada Client 2

Gambar Hasil Running Tampilan Pada Client 3

Gambar Hasil Running Program pada Client 1 melakukan chatting

Page 11: Laporan program chatting1

Gambar Hasil Running Program pada Client 2 melakukan chatting

Gambar Hasil Running Program pada Client 3 melakukan chatting