laporan chatting server dan client
TRANSCRIPT
PRAKTEK PEMROGRAMAN JARINGAN KOMPUTER
PROGRAM APLIKASI CHATTING SERVER DAN CLIENT
DENGAN MENGGUNAKAN BAHASA PEMROGRAMAN
JAVA
Oleh :
Nama : Tri Lestari
NIM : 061130701310
Kelas : 6 CD
JURUSAN TEKNIK KOMPUTER
POLITEKNIK NEGERI SRIWIJAYA
PALEMBANG
2014
PROGRAM APLIKASI CHATTING SERVER DAN CLIENT
DENGAN MENGGUNAKAN BAHASA PEMROGRAMAN
JAVA
A. Program Chatting Server
Listing Program Chatting untuk Server:
import java.io.*;import java.net.*;import java.util.Scanner;
public class Server {
private static ServerSocket serverSocket;private static final int PORT = 1111;
public static void main(String[] args) throwsIOException {
try {serverSocket = new ServerSocket(PORT);System.out.println("Server berjalan,
menunggu client...");} catch (IOException ioEx) {
System.out.println("\nTidak dapat mensetupport!");
System.exit(1);}do {
//Menunggu koneksi dari client...Socket client = serverSocket.accept();
System.out.println("\nClient baruditerima.\n");
//Buat thread untuk menangani komunikasidengan client ini
//lewatkan socket yang relevan kecontructor dari thread ini
ClientHandler handler = newClientHandler(client);
handler.start(); //menjalankan threadyang 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;
try {input = new
Scanner(client.getInputStream());
output = newPrintWriter(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 inputstream socket...
received = input.nextLine();System.out.println(received);System.out.print("");
System.out.print("server: ");message = userEntry.nextLine();
//Kirim pesan (message)ke client pada outputstream socket...
//Terima respon dari client pada stream inputsocket...
output.println(message);
//Ulangi sampai client mengirimkan pesan'KELUAR'...
} while (!received.equals("KELUAR"));
try {if (client != null) {
System.out.println("Menutupkoneksi...");
client.close();}
} catch (IOException ioEx) {
System.out.println("Penutupan koneksigagal!");
}}
}
B. Program Chatting Client
Listing Program Chatting untuk Client:
import java.io.*;import java.net.*;import java.util.Scanner;
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();
}
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 darikeyboard...
Scanner userEntry = new Scanner(System.in);String message, response;do {
System.out.print("klien 1: ");message = userEntry.nextLine();
//Kirim pesan (message)ke server padaoutput stream socket...
//Terima respon dari server pada streaminput 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("\nMenutupkoneksi...");
socket.close();} catch (IOException ioEx) {
System.out.println("Gagal menutupkoneksi!");
System.exit(1);}
}}
}
C. Hasil Program Chatting Server
Tampilan hasil program server menunggu client :
Tampilan hasil program ketika server menerima client baru:
Tampilan hasil program dengan input obrolan dari client 1, client 2, dan
client 3:
D. Hasil Program Chatting Client
Tampilan hasil program pada client 1:
Tampilan hasil program pada client 2:
Tampilan hasil program pada client 3:
Tampilan hasil program pada client 1 saat melakukan chatting dengan server:
Tampilan hasil program pada client 2 saat melakukan chatting dengan server:
Tampilan hasil program pada client 3 saat melakukan chatting dengan server:
E. Pembahasan Listing Program Server
public class server {
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;
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.
F. Pembahasan Listing Program Client
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!");
System.exit(1);
Kode diatas merupakan perintah untuk mengakhiri program ketika user
akan keluar.