Pemograman Jaringan Komputer VI
Kamis, 03 Juli 2014
0
komentar
TUGAS VI
Membuat Aplikasi Client Server
Dengan Bahasa Pemrograman Java
Oleh :
Stefanus Dear Damanik
(061130701309)
6CD
JURUSAN TEKNIK
KOMPUTER
POLITEKNIK NEGERI SRIWIJAYA
PALEMBANG
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.
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 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.
1.2.2.2 Pembahasan kelas
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.
1.3 Lampiran
1.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 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;
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;
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);
}
}
}
}
download panduan lengkap disini Klik Here