SlideShare a Scribd company logo
TUGAS CHATTING CLIENT SERVER
Membangun Aplikasi Client Server Dengan Bahasa
Pemrograman Java
Oleh :
Rara Ariesta Priliani
(061130701307)
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.
1.2 PEMBAHASAN
1.2.1 Hasil runing program
1.2.1.1 Server
Gambar 1.1 Hasil Running Program Server Menunggu Client
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
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
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
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 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);
}
}
}
}

More Related Content

What's hot

Kriptografi modern
Kriptografi modernKriptografi modern
Kriptografi modern
niizarch
 
Signal Conditioning
Signal ConditioningSignal Conditioning
Signal ConditioningMuhammad AR
 
Chapt 4. interaction(interaksi)
Chapt 4. interaction(interaksi)Chapt 4. interaction(interaksi)
Chapt 4. interaction(interaksi)Ibnu Dzakwan
 
Metodologi Penelitian pada Bidang Ilmu Komputer dan Teknologi Informasi
Metodologi Penelitian pada Bidang Ilmu Komputer dan Teknologi InformasiMetodologi Penelitian pada Bidang Ilmu Komputer dan Teknologi Informasi
Metodologi Penelitian pada Bidang Ilmu Komputer dan Teknologi InformasiAlbaar Rubhasy
 
Fungsi alih sistem kontrol
Fungsi alih sistem kontrolFungsi alih sistem kontrol
Fungsi alih sistem kontrol
arie eric
 
Diagram Konteks dan DFD Sistem Informasi Penjualan
Diagram Konteks dan DFD Sistem Informasi PenjualanDiagram Konteks dan DFD Sistem Informasi Penjualan
Diagram Konteks dan DFD Sistem Informasi Penjualan
Ricky Kusriana Subagja
 
SENSOR DAN TRANDUSER.pptx
SENSOR DAN TRANDUSER.pptxSENSOR DAN TRANDUSER.pptx
SENSOR DAN TRANDUSER.pptx
PrismaMegantoro
 
Analisis ERD Database Rumah Sakit
Analisis ERD Database Rumah SakitAnalisis ERD Database Rumah Sakit
Analisis ERD Database Rumah Sakit
Fitria Nuri
 
Metode pencarian heuristik
Metode pencarian heuristikMetode pencarian heuristik
Metode pencarian heuristikBaguss Chandrass
 
Kode etik profesi it
Kode etik profesi itKode etik profesi it
Kode etik profesi it
Bayu Aji Kusuma
 
Aplikasi Chatting dengan Client-Server Menggunakan Protokol TCP
Aplikasi Chatting dengan Client-Server Menggunakan Protokol TCPAplikasi Chatting dengan Client-Server Menggunakan Protokol TCP
Aplikasi Chatting dengan Client-Server Menggunakan Protokol TCP
Syauqina Idzni Adzhani
 
Rancangan 3 Gedung 4 Ruangan di setiap gedung
Rancangan 3 Gedung 4 Ruangan di setiap gedungRancangan 3 Gedung 4 Ruangan di setiap gedung
Rancangan 3 Gedung 4 Ruangan di setiap gedungFanny Oktaviarti
 
Latihan Soal Nubneting Jaringan Komputer
Latihan Soal Nubneting Jaringan KomputerLatihan Soal Nubneting Jaringan Komputer
Latihan Soal Nubneting Jaringan Komputer
Simon Patabang
 
Ancaman-Ancaman pada Keamanan Jaringan Komputer
Ancaman-Ancaman pada Keamanan Jaringan KomputerAncaman-Ancaman pada Keamanan Jaringan Komputer
Ancaman-Ancaman pada Keamanan Jaringan Komputer
Fajar Sany
 
Pengolahan Sinyal Digital - Slide week 2 - sistem & sinyal waktu diskrit
Pengolahan Sinyal Digital - Slide week 2 - sistem & sinyal waktu diskritPengolahan Sinyal Digital - Slide week 2 - sistem & sinyal waktu diskrit
Pengolahan Sinyal Digital - Slide week 2 - sistem & sinyal waktu diskritBeny Nugraha
 
Kelompok 6(aplikasi transistor)
Kelompok 6(aplikasi transistor)Kelompok 6(aplikasi transistor)
Kelompok 6(aplikasi transistor)Marina Natsir
 
Pertemuan 9.1 pengalamatan juga
Pertemuan 9.1 pengalamatan jugaPertemuan 9.1 pengalamatan juga
Pertemuan 9.1 pengalamatan juga
Buhori Muslim
 
Representasi Pengetahuan
Representasi PengetahuanRepresentasi Pengetahuan
Representasi Pengetahuan
Sherly Uda
 
Pertemuan 9 pengalamatan
Pertemuan 9 pengalamatanPertemuan 9 pengalamatan
Pertemuan 9 pengalamatan
Buhori Muslim
 

What's hot (20)

Kriptografi modern
Kriptografi modernKriptografi modern
Kriptografi modern
 
Signal Conditioning
Signal ConditioningSignal Conditioning
Signal Conditioning
 
Chapt 4. interaction(interaksi)
Chapt 4. interaction(interaksi)Chapt 4. interaction(interaksi)
Chapt 4. interaction(interaksi)
 
Metodologi Penelitian pada Bidang Ilmu Komputer dan Teknologi Informasi
Metodologi Penelitian pada Bidang Ilmu Komputer dan Teknologi InformasiMetodologi Penelitian pada Bidang Ilmu Komputer dan Teknologi Informasi
Metodologi Penelitian pada Bidang Ilmu Komputer dan Teknologi Informasi
 
Timer dan counter
Timer dan counterTimer dan counter
Timer dan counter
 
Fungsi alih sistem kontrol
Fungsi alih sistem kontrolFungsi alih sistem kontrol
Fungsi alih sistem kontrol
 
Diagram Konteks dan DFD Sistem Informasi Penjualan
Diagram Konteks dan DFD Sistem Informasi PenjualanDiagram Konteks dan DFD Sistem Informasi Penjualan
Diagram Konteks dan DFD Sistem Informasi Penjualan
 
SENSOR DAN TRANDUSER.pptx
SENSOR DAN TRANDUSER.pptxSENSOR DAN TRANDUSER.pptx
SENSOR DAN TRANDUSER.pptx
 
Analisis ERD Database Rumah Sakit
Analisis ERD Database Rumah SakitAnalisis ERD Database Rumah Sakit
Analisis ERD Database Rumah Sakit
 
Metode pencarian heuristik
Metode pencarian heuristikMetode pencarian heuristik
Metode pencarian heuristik
 
Kode etik profesi it
Kode etik profesi itKode etik profesi it
Kode etik profesi it
 
Aplikasi Chatting dengan Client-Server Menggunakan Protokol TCP
Aplikasi Chatting dengan Client-Server Menggunakan Protokol TCPAplikasi Chatting dengan Client-Server Menggunakan Protokol TCP
Aplikasi Chatting dengan Client-Server Menggunakan Protokol TCP
 
Rancangan 3 Gedung 4 Ruangan di setiap gedung
Rancangan 3 Gedung 4 Ruangan di setiap gedungRancangan 3 Gedung 4 Ruangan di setiap gedung
Rancangan 3 Gedung 4 Ruangan di setiap gedung
 
Latihan Soal Nubneting Jaringan Komputer
Latihan Soal Nubneting Jaringan KomputerLatihan Soal Nubneting Jaringan Komputer
Latihan Soal Nubneting Jaringan Komputer
 
Ancaman-Ancaman pada Keamanan Jaringan Komputer
Ancaman-Ancaman pada Keamanan Jaringan KomputerAncaman-Ancaman pada Keamanan Jaringan Komputer
Ancaman-Ancaman pada Keamanan Jaringan Komputer
 
Pengolahan Sinyal Digital - Slide week 2 - sistem & sinyal waktu diskrit
Pengolahan Sinyal Digital - Slide week 2 - sistem & sinyal waktu diskritPengolahan Sinyal Digital - Slide week 2 - sistem & sinyal waktu diskrit
Pengolahan Sinyal Digital - Slide week 2 - sistem & sinyal waktu diskrit
 
Kelompok 6(aplikasi transistor)
Kelompok 6(aplikasi transistor)Kelompok 6(aplikasi transistor)
Kelompok 6(aplikasi transistor)
 
Pertemuan 9.1 pengalamatan juga
Pertemuan 9.1 pengalamatan jugaPertemuan 9.1 pengalamatan juga
Pertemuan 9.1 pengalamatan juga
 
Representasi Pengetahuan
Representasi PengetahuanRepresentasi Pengetahuan
Representasi Pengetahuan
 
Pertemuan 9 pengalamatan
Pertemuan 9 pengalamatanPertemuan 9 pengalamatan
Pertemuan 9 pengalamatan
 

Similar to Laporan program chatting client server

Program chatting
Program chattingProgram chatting
Program chattingAisy Cuyy
 
Laporan program chatting
Laporan program chattingLaporan program chatting
Laporan program chattingganteng8
 
Laporan program chatting1
Laporan program chatting1Laporan program chatting1
Laporan program chatting1ichsanbarokah
 
Laporan chatting server dan client
Laporan chatting server dan clientLaporan chatting server dan client
Laporan chatting server dan clienttrilestari08
 
Laporan Chatting Server dan Client
Laporan Chatting Server dan ClientLaporan Chatting Server dan Client
Laporan Chatting Server dan Clienttrilestari08
 
Zainal chatting
Zainal chattingZainal chatting
Zainal chatting
Rizal Yugo Prasetyo
 
husni-sister2017_05c_pemrograman_socket_java_server_detail.pdf
husni-sister2017_05c_pemrograman_socket_java_server_detail.pdfhusni-sister2017_05c_pemrograman_socket_java_server_detail.pdf
husni-sister2017_05c_pemrograman_socket_java_server_detail.pdf
LiberitoSantos
 
Praktikum pemrograman jaringan-1-3
Praktikum pemrograman jaringan-1-3Praktikum pemrograman jaringan-1-3
Praktikum pemrograman jaringan-1-3sulaiman yunus
 
Octav android mysql
Octav android mysqlOctav android mysql
Octav android mysqlrikysp
 
Part 3 & 4 Networking Programming.pdf
Part 3 & 4 Networking Programming.pdfPart 3 & 4 Networking Programming.pdf
Part 3 & 4 Networking Programming.pdf
AiAdhi
 
Tutorial membuat sertifikat ssl menggunakan xampp
Tutorial membuat sertifikat ssl menggunakan xamppTutorial membuat sertifikat ssl menggunakan xampp
Tutorial membuat sertifikat ssl menggunakan xampp
Yoga Pratama Putra
 
Tugas_pemrograman3_1100631026_Helmi_MH_
Tugas_pemrograman3_1100631026_Helmi_MH_Tugas_pemrograman3_1100631026_Helmi_MH_
Tugas_pemrograman3_1100631026_Helmi_MH_
Helmi Mahfudhatul
 
Jeni j2 me-bab11-topik-topik tambahan
Jeni j2 me-bab11-topik-topik tambahanJeni j2 me-bab11-topik-topik tambahan
Jeni j2 me-bab11-topik-topik tambahanUNIVERSITY Of LAMPUNG
 
Modul3 algoritma dan pemrograman procedure dan_function
Modul3 algoritma dan pemrograman procedure dan_functionModul3 algoritma dan pemrograman procedure dan_function
Modul3 algoritma dan pemrograman procedure dan_functionPolytechnic State Semarang
 
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSONTutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Dimas Prawira
 
Socket Programming TCP Echo Client Server (Python)
Socket Programming  TCP Echo Client Server  (Python)Socket Programming  TCP Echo Client Server  (Python)
Socket Programming TCP Echo Client Server (Python)
Lusiana Diyan
 
Chapter 10. Operasi IO.ppt
Chapter 10. Operasi IO.pptChapter 10. Operasi IO.ppt
Chapter 10. Operasi IO.ppt
TashidFafri1
 
Mulai melangkah dengan Node.js
Mulai melangkah dengan Node.jsMulai melangkah dengan Node.js
Mulai melangkah dengan Node.js
Mohammad Anwari
 

Similar to Laporan program chatting client server (20)

Program chatting
Program chattingProgram chatting
Program chatting
 
Laporan program chatting
Laporan program chattingLaporan program chatting
Laporan program chatting
 
Laporan program chatting1
Laporan program chatting1Laporan program chatting1
Laporan program chatting1
 
Laporan chatting server dan client
Laporan chatting server dan clientLaporan chatting server dan client
Laporan chatting server dan client
 
Laporan Chatting Server dan Client
Laporan Chatting Server dan ClientLaporan Chatting Server dan Client
Laporan Chatting Server dan Client
 
Jeni Intro2 Bab10 Jaringan
Jeni Intro2 Bab10 JaringanJeni Intro2 Bab10 Jaringan
Jeni Intro2 Bab10 Jaringan
 
Zainal chatting
Zainal chattingZainal chatting
Zainal chatting
 
husni-sister2017_05c_pemrograman_socket_java_server_detail.pdf
husni-sister2017_05c_pemrograman_socket_java_server_detail.pdfhusni-sister2017_05c_pemrograman_socket_java_server_detail.pdf
husni-sister2017_05c_pemrograman_socket_java_server_detail.pdf
 
Praktikum pemrograman jaringan-1-3
Praktikum pemrograman jaringan-1-3Praktikum pemrograman jaringan-1-3
Praktikum pemrograman jaringan-1-3
 
Octav android mysql
Octav android mysqlOctav android mysql
Octav android mysql
 
Part 3 & 4 Networking Programming.pdf
Part 3 & 4 Networking Programming.pdfPart 3 & 4 Networking Programming.pdf
Part 3 & 4 Networking Programming.pdf
 
Tutorial membuat sertifikat ssl menggunakan xampp
Tutorial membuat sertifikat ssl menggunakan xamppTutorial membuat sertifikat ssl menggunakan xampp
Tutorial membuat sertifikat ssl menggunakan xampp
 
Tugas_pemrograman3_1100631026_Helmi_MH_
Tugas_pemrograman3_1100631026_Helmi_MH_Tugas_pemrograman3_1100631026_Helmi_MH_
Tugas_pemrograman3_1100631026_Helmi_MH_
 
Jeni J2 Me Bab11 Topik Topik Tambahan
Jeni J2 Me Bab11 Topik Topik TambahanJeni J2 Me Bab11 Topik Topik Tambahan
Jeni J2 Me Bab11 Topik Topik Tambahan
 
Jeni j2 me-bab11-topik-topik tambahan
Jeni j2 me-bab11-topik-topik tambahanJeni j2 me-bab11-topik-topik tambahan
Jeni j2 me-bab11-topik-topik tambahan
 
Modul3 algoritma dan pemrograman procedure dan_function
Modul3 algoritma dan pemrograman procedure dan_functionModul3 algoritma dan pemrograman procedure dan_function
Modul3 algoritma dan pemrograman procedure dan_function
 
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSONTutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
 
Socket Programming TCP Echo Client Server (Python)
Socket Programming  TCP Echo Client Server  (Python)Socket Programming  TCP Echo Client Server  (Python)
Socket Programming TCP Echo Client Server (Python)
 
Chapter 10. Operasi IO.ppt
Chapter 10. Operasi IO.pptChapter 10. Operasi IO.ppt
Chapter 10. Operasi IO.ppt
 
Mulai melangkah dengan Node.js
Mulai melangkah dengan Node.jsMulai melangkah dengan Node.js
Mulai melangkah dengan Node.js
 

Laporan program chatting client server

  • 1. TUGAS CHATTING CLIENT SERVER Membangun Aplikasi Client Server Dengan Bahasa Pemrograman Java Oleh : Rara Ariesta Priliani (061130701307) 6CD JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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 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;
  • 7. 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.
  • 8. 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...");
  • 9. 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 {
  • 10. 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(); }
  • 11. } 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();
  • 12. //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); } } } }