SlideShare a Scribd company logo
TUGAS
Membuat Program Chatting
Oleh :
M. Ichsan Barokah
061130701305
6CD
JURUSAN TEKNIK KOMPUTER
POLITEKNIK NEGERI SRIWIJAYA
PALEMBANG
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;
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.
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.
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);
}
}
}
}
Gambar Hasil Running Program Server Menunggu Client
Gambar Hasil Running Program Ketika Server Menerima Client Baru
Gambar Hasil Running Program dengan input obrolan dari client 1,2 dan 3
Gambar Hasil Running Tampilan Pada Client 1
Gambar Hasil Running Tampilan Pada Client 2
Gambar Hasil Running Tampilan Pada Client 3
Gambar Hasil Running Program pada Client 1 melakukan chatting
Gambar Hasil Running Program pada Client 2 melakukan chatting
Gambar Hasil Running Program pada Client 3 melakukan chatting

More Related Content

What's hot

Algoritma dan Struktur Data - Sintaks C++
Algoritma dan Struktur Data - Sintaks C++Algoritma dan Struktur Data - Sintaks C++
Algoritma dan Struktur Data - Sintaks C++KuliahKita
 
Sistem Mikrokontroller Simulasi Program 2 LED Menyala Bergantian dengan Softw...
Sistem Mikrokontroller Simulasi Program 2 LED Menyala Bergantian dengan Softw...Sistem Mikrokontroller Simulasi Program 2 LED Menyala Bergantian dengan Softw...
Sistem Mikrokontroller Simulasi Program 2 LED Menyala Bergantian dengan Softw...IqbalAlHidayah
 
“Hollywood style cracking” pada Block Cipher mode CBC: Analisis and Pencegahan
“Hollywood style cracking” pada Block Cipher mode CBC: Analisis and Pencegahan“Hollywood style cracking” pada Block Cipher mode CBC: Analisis and Pencegahan
“Hollywood style cracking” pada Block Cipher mode CBC: Analisis and Pencegahanidsecconf
 
Pemrograman C++ - Masukan dan Keluaran
Pemrograman C++ - Masukan dan KeluaranPemrograman C++ - Masukan dan Keluaran
Pemrograman C++ - Masukan dan KeluaranKuliahKita
 
Fitrah hi hukum tugas so 2
Fitrah hi hukum tugas so 2Fitrah hi hukum tugas so 2
Fitrah hi hukum tugas so 2Fitrahdede
 

What's hot (7)

Jeni Intro2 Bab10 Jaringan
Jeni Intro2 Bab10 JaringanJeni Intro2 Bab10 Jaringan
Jeni Intro2 Bab10 Jaringan
 
Algoritma dan Struktur Data - Sintaks C++
Algoritma dan Struktur Data - Sintaks C++Algoritma dan Struktur Data - Sintaks C++
Algoritma dan Struktur Data - Sintaks C++
 
Sistem Mikrokontroller Simulasi Program 2 LED Menyala Bergantian dengan Softw...
Sistem Mikrokontroller Simulasi Program 2 LED Menyala Bergantian dengan Softw...Sistem Mikrokontroller Simulasi Program 2 LED Menyala Bergantian dengan Softw...
Sistem Mikrokontroller Simulasi Program 2 LED Menyala Bergantian dengan Softw...
 
“Hollywood style cracking” pada Block Cipher mode CBC: Analisis and Pencegahan
“Hollywood style cracking” pada Block Cipher mode CBC: Analisis and Pencegahan“Hollywood style cracking” pada Block Cipher mode CBC: Analisis and Pencegahan
“Hollywood style cracking” pada Block Cipher mode CBC: Analisis and Pencegahan
 
Pemrograman C++ - Masukan dan Keluaran
Pemrograman C++ - Masukan dan KeluaranPemrograman C++ - Masukan dan Keluaran
Pemrograman C++ - Masukan dan Keluaran
 
Struktur program c++
Struktur program c++Struktur program c++
Struktur program c++
 
Fitrah hi hukum tugas so 2
Fitrah hi hukum tugas so 2Fitrah hi hukum tugas so 2
Fitrah hi hukum tugas so 2
 

Similar to Laporan program chatting1

Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java
Membuat Aplikasi Chatting Client Server Dengan Pemrograman JavaMembuat Aplikasi Chatting Client Server Dengan Pemrograman Java
Membuat Aplikasi Chatting Client Server Dengan Pemrograman Javayoyomay93
 
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.pdfLiberitoSantos
 
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.pdfAiAdhi
 
Chapter 10. Operasi IO.ppt
Chapter 10. Operasi IO.pptChapter 10. Operasi IO.ppt
Chapter 10. Operasi IO.pptTashidFafri1
 
Tutorial membuat sertifikat ssl menggunakan xampp
Tutorial membuat sertifikat ssl menggunakan xamppTutorial membuat sertifikat ssl menggunakan xampp
Tutorial membuat sertifikat ssl menggunakan xamppYoga Pratama Putra
 
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
 
Pengantar Sistem Informasi Akuntansi 2
Pengantar Sistem Informasi Akuntansi 2Pengantar Sistem Informasi Akuntansi 2
Pengantar Sistem Informasi Akuntansi 2Lailani Fitria
 
Cara membuat fungsi dan prosedur pada java
Cara membuat fungsi dan prosedur pada javaCara membuat fungsi dan prosedur pada java
Cara membuat fungsi dan prosedur pada javaDevandy Enda
 
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
 
pemrograman socket pada jaringan komputer
pemrograman socket pada jaringan komputerpemrograman socket pada jaringan komputer
pemrograman socket pada jaringan komputeralisofyan13
 
04. prak.-pemrograman-client-server
04. prak.-pemrograman-client-server04. prak.-pemrograman-client-server
04. prak.-pemrograman-client-serverAyu Karisma Alfiana
 
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
 
Materi : Chapter 1 Pemrograman Lanjut.pdf
Materi : Chapter 1 Pemrograman Lanjut.pdfMateri : Chapter 1 Pemrograman Lanjut.pdf
Materi : Chapter 1 Pemrograman Lanjut.pdfFujiAdam
 
Penggunaan prosedur dan fungsi pada pemrograman c++
Penggunaan prosedur dan fungsi pada pemrograman c++Penggunaan prosedur dan fungsi pada pemrograman c++
Penggunaan prosedur dan fungsi pada pemrograman c++MunawirMunawir15
 

Similar to Laporan program chatting1 (20)

Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java
Membuat Aplikasi Chatting Client Server Dengan Pemrograman JavaMembuat Aplikasi Chatting Client Server Dengan Pemrograman Java
Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java
 
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
 
Ii java input ouput
Ii   java input ouputIi   java input ouput
Ii java input ouput
 
Part 3 & 4 Networking Programming.pdf
Part 3 & 4 Networking Programming.pdfPart 3 & 4 Networking Programming.pdf
Part 3 & 4 Networking Programming.pdf
 
Chapter 10. Operasi IO.ppt
Chapter 10. Operasi IO.pptChapter 10. Operasi IO.ppt
Chapter 10. Operasi IO.ppt
 
Tutorial membuat sertifikat ssl menggunakan xampp
Tutorial membuat sertifikat ssl menggunakan xamppTutorial membuat sertifikat ssl menggunakan xampp
Tutorial membuat sertifikat ssl menggunakan xampp
 
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
 
Pengantar Sistem Informasi Akuntansi 2
Pengantar Sistem Informasi Akuntansi 2Pengantar Sistem Informasi Akuntansi 2
Pengantar Sistem Informasi Akuntansi 2
 
Cara membuat fungsi dan prosedur pada java
Cara membuat fungsi dan prosedur pada javaCara membuat fungsi dan prosedur pada java
Cara membuat fungsi dan prosedur pada java
 
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)
 
pemrograman socket pada jaringan komputer
pemrograman socket pada jaringan komputerpemrograman socket pada jaringan komputer
pemrograman socket pada jaringan komputer
 
2. CodeBlocks & C++
2. CodeBlocks & C++2. CodeBlocks & C++
2. CodeBlocks & C++
 
04. prak.-pemrograman-client-server
04. prak.-pemrograman-client-server04. prak.-pemrograman-client-server
04. prak.-pemrograman-client-server
 
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
 
Materi : Chapter 1 Pemrograman Lanjut.pdf
Materi : Chapter 1 Pemrograman Lanjut.pdfMateri : Chapter 1 Pemrograman Lanjut.pdf
Materi : Chapter 1 Pemrograman Lanjut.pdf
 
Penggunaan prosedur dan fungsi pada pemrograman c++
Penggunaan prosedur dan fungsi pada pemrograman c++Penggunaan prosedur dan fungsi pada pemrograman c++
Penggunaan prosedur dan fungsi pada pemrograman c++
 

Recently uploaded

Tugas 01 Penjelasan Cara Melakukan Gasifikasi.pdf
Tugas 01 Penjelasan Cara Melakukan Gasifikasi.pdfTugas 01 Penjelasan Cara Melakukan Gasifikasi.pdf
Tugas 01 Penjelasan Cara Melakukan Gasifikasi.pdfnimrodnapitu
 
Daftar Lembaga Penyedia Jasa Linkungan.pdf
Daftar Lembaga Penyedia Jasa Linkungan.pdfDaftar Lembaga Penyedia Jasa Linkungan.pdf
Daftar Lembaga Penyedia Jasa Linkungan.pdfTsabitpattipeilohy
 
Panduan Logging Ringkas Nickel laterite.
Panduan Logging Ringkas Nickel laterite.Panduan Logging Ringkas Nickel laterite.
Panduan Logging Ringkas Nickel laterite.aldreyuda
 
Ukuran penyebaran data berkelompok (statistika)
Ukuran penyebaran data berkelompok (statistika)Ukuran penyebaran data berkelompok (statistika)
Ukuran penyebaran data berkelompok (statistika)hendriko8
 
Metode Kerja Borepile utk Proyek Jembantan Hauling Blok III Utara PT AGM Kals...
Metode Kerja Borepile utk Proyek Jembantan Hauling Blok III Utara PT AGM Kals...Metode Kerja Borepile utk Proyek Jembantan Hauling Blok III Utara PT AGM Kals...
Metode Kerja Borepile utk Proyek Jembantan Hauling Blok III Utara PT AGM Kals...MichaelBluer
 
Matematika diskrit: metode pohon/trees.ppt
Matematika diskrit: metode pohon/trees.pptMatematika diskrit: metode pohon/trees.ppt
Matematika diskrit: metode pohon/trees.pptAzrilAld
 
SUPERVISOR K3 (MAULANA PANDU PERMANA).ppt
SUPERVISOR K3 (MAULANA PANDU PERMANA).pptSUPERVISOR K3 (MAULANA PANDU PERMANA).ppt
SUPERVISOR K3 (MAULANA PANDU PERMANA).pptwartonowartono11
 
Studi Kasus Pantai Kelan Provinsi Bali.pdf
Studi Kasus Pantai Kelan Provinsi Bali.pdfStudi Kasus Pantai Kelan Provinsi Bali.pdf
Studi Kasus Pantai Kelan Provinsi Bali.pdfnovia73231
 

Recently uploaded (8)

Tugas 01 Penjelasan Cara Melakukan Gasifikasi.pdf
Tugas 01 Penjelasan Cara Melakukan Gasifikasi.pdfTugas 01 Penjelasan Cara Melakukan Gasifikasi.pdf
Tugas 01 Penjelasan Cara Melakukan Gasifikasi.pdf
 
Daftar Lembaga Penyedia Jasa Linkungan.pdf
Daftar Lembaga Penyedia Jasa Linkungan.pdfDaftar Lembaga Penyedia Jasa Linkungan.pdf
Daftar Lembaga Penyedia Jasa Linkungan.pdf
 
Panduan Logging Ringkas Nickel laterite.
Panduan Logging Ringkas Nickel laterite.Panduan Logging Ringkas Nickel laterite.
Panduan Logging Ringkas Nickel laterite.
 
Ukuran penyebaran data berkelompok (statistika)
Ukuran penyebaran data berkelompok (statistika)Ukuran penyebaran data berkelompok (statistika)
Ukuran penyebaran data berkelompok (statistika)
 
Metode Kerja Borepile utk Proyek Jembantan Hauling Blok III Utara PT AGM Kals...
Metode Kerja Borepile utk Proyek Jembantan Hauling Blok III Utara PT AGM Kals...Metode Kerja Borepile utk Proyek Jembantan Hauling Blok III Utara PT AGM Kals...
Metode Kerja Borepile utk Proyek Jembantan Hauling Blok III Utara PT AGM Kals...
 
Matematika diskrit: metode pohon/trees.ppt
Matematika diskrit: metode pohon/trees.pptMatematika diskrit: metode pohon/trees.ppt
Matematika diskrit: metode pohon/trees.ppt
 
SUPERVISOR K3 (MAULANA PANDU PERMANA).ppt
SUPERVISOR K3 (MAULANA PANDU PERMANA).pptSUPERVISOR K3 (MAULANA PANDU PERMANA).ppt
SUPERVISOR K3 (MAULANA PANDU PERMANA).ppt
 
Studi Kasus Pantai Kelan Provinsi Bali.pdf
Studi Kasus Pantai Kelan Provinsi Bali.pdfStudi Kasus Pantai Kelan Provinsi Bali.pdf
Studi Kasus Pantai Kelan Provinsi Bali.pdf
 

Laporan program chatting1

  • 1. TUGAS Membuat Program Chatting Oleh : M. Ichsan Barokah 061130701305 6CD JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG
  • 2. 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;
  • 3. 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.
  • 4. 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!");
  • 5. 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;
  • 6. 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;
  • 7. 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); } } } }
  • 8. Gambar Hasil Running Program Server Menunggu Client Gambar Hasil Running Program Ketika Server Menerima Client Baru
  • 9. Gambar Hasil Running Program dengan input obrolan dari client 1,2 dan 3 Gambar Hasil Running Tampilan Pada Client 1
  • 10. Gambar Hasil Running Tampilan Pada Client 2 Gambar Hasil Running Tampilan Pada Client 3 Gambar Hasil Running Program pada Client 1 melakukan chatting
  • 11. Gambar Hasil Running Program pada Client 2 melakukan chatting Gambar Hasil Running Program pada Client 3 melakukan chatting