Aplikasi Multi Chatting dengan java textpad
-
Upload
zanna-bii-sarange -
Category
Documents
-
view
177 -
download
33
description
Transcript of Aplikasi Multi Chatting dengan java textpad
-
Siti Nurjanah (Teknik Komputer 6CB)
APLIKASI CHATING MULTICLIENT MENGGUNAKAN JAVA TEXTPAD
Java adalah bahasa pemrograman tingkat tinggi yang berorientasi objek dan program
java tersusun dari bagian yang disebut kelas. Kelas terdiri atas metode-metode yang melakukan
pekerjaan dan mengembalikan informasi setelah melakukan tugasnya. Para pemrogram Java
banyak mengambil keuntungan dari kumpulan kelas di pustaka kelas Java, yang disebut
dengan Java Application Programming Interface (API).
Chatting adalah percakapan interaktif antar sesama pengguna komputer yang terhubung
dalam suatu jaringan. Aplikasi chatting merupakan suatu aplikasi yang memungkinkan
pengguna (client) berkomunikasi teks secara langsung (Real Time) dengan pengguna lain
dengan menggunakan media yang ada.
Pada bagian kali ini saya akan mencoba untuk membuat suatu aplikasi chatting
multiclient sederhana dengan menggunakan command prompt line berbasis bahasa
pemograman java dan Textpad. Dimana nanti masing-masing client yang terhubung ke
jaringan dapat langsung mengobrol secara langsung.
Langkah Percobaan
1. Tuliskan listing program client dan server.
Listing Program MultiThread Server
import java.io.DataInputStream;
import java.io.PrintStream;
import java.io.IOException;
import java.net.Socket;
import java.net.ServerSocket;
/*
* chat server yang mengantar pesan publik dan private.
*/
public class MultiThreadChatServer {
// server socket.
private static ServerSocket serverSocket = null;
// client socket.
-
Siti Nurjanah (Teknik Komputer 6CB)
APLIKASI CHATING MULTICLIENT MENGGUNAKAN JAVA TEXTPAD
private static Socket clientSocket = null;
// chat server dapat menerima sampai maxClientsCount pada
koneksi client.
private static final int maxClientsCount = 10;
private static final clientThread[] threads = new
clientThread[maxClientsCount];
public static void main(String args[]) {
// default port number.
int portNumber = 2222;
if (args.length < 1) {
System.out
.println("Usage: java MultiThreadChatServer
\n"
+ "Now using port number=" + portNumber);
} else {
portNumber = Integer.valueOf(args[0]).intValue();
}
/*
* buka server socket pada portNumber (default 2222).
catatan:kita tidak da
* pat memilih port dibawah 1023 jika kita bukan
administrator (root).
*/
try {
serverSocket = new ServerSocket(portNumber);
} catch (IOException e) {
System.out.println(e);
}
/*
-
Siti Nurjanah (Teknik Komputer 6CB)
APLIKASI CHATING MULTICLIENT MENGGUNAKAN JAVA TEXTPAD
* buat client socket untuk setiap koneksi dan sesuaikan
dengan thread
* client baru.
*/
while (true) {
try {
clientSocket = serverSocket.accept();
int i = 0;
for (i = 0; i < maxClientsCount; i++) {
if (threads[i] == null) {
(threads[i] = new clientThread(clientSocket,
threads)).start();
break;
}
}
if (i == maxClientsCount) {
PrintStream os = new
PrintStream(clientSocket.getOutputStream());
os.println("Server too busy. Try later.");
os.close();
clientSocket.close();
}
} catch (IOException e) {
System.out.println(e);
}
}
}
}
/*
* Thread chat client . thread client ini membuka input dan
output
* streams untuk hubungan client, menanyakan nama
client,menginformasikan semua
-
Siti Nurjanah (Teknik Komputer 6CB)
APLIKASI CHATING MULTICLIENT MENGGUNAKAN JAVA TEXTPAD
* client yang terhubung ke server bahwa ada client baru yang
terhubung ke da-
* lam chatroom, selama data diterima, data di kembalikan ke
semua
* client. saat client meninggalkan chatroom thread ini juga
menginformasikan
* pada client lainnya.
*/
class clientThread extends Thread {
private DataInputStream is = null;
private PrintStream os = null;
private Socket clientSocket = null;
private final clientThread[] threads;
private int maxClientsCount;
public clientThread(Socket clientSocket, clientThread[]
threads) {
this.clientSocket = clientSocket;
this.threads = threads;
maxClientsCount = threads.length;
}
public void run() {
int maxClientsCount = this.maxClientsCount;
clientThread[] threads = this.threads;
try {
/*
* membuat input dan output streams untuk client.
*/
is = new DataInputStream(clientSocket.getInputStream());
os = new PrintStream(clientSocket.getOutputStream());
os.println("Enter your name.");
-
Siti Nurjanah (Teknik Komputer 6CB)
APLIKASI CHATING MULTICLIENT MENGGUNAKAN JAVA TEXTPAD
String name = is.readLine().trim();
os.println("Hello " + name
+ " to our chat room.\nTo leave enter /quit in a new
line");
for (int i = 0; i < maxClientsCount; i++) {
if (threads[i] != null && threads[i] != this) {
threads[i].os.println("*** A new user " + name
+ " entered the chat room !!! ***");
}
}
while (true) {
String line = is.readLine();
if (line.startsWith("/quit")) {
break;
}
for (int i = 0; i < maxClientsCount; i++) {
if (threads[i] != null) {
threads[i].os.println("
-
Siti Nurjanah (Teknik Komputer 6CB)
APLIKASI CHATING MULTICLIENT MENGGUNAKAN JAVA TEXTPAD
*/
for (int i = 0; i < maxClientsCount; i++) {
if (threads[i] == this) {
threads[i] = null;
}
}
/*
* tutup output stream, tutup input stream, tutup socket.
*/
is.close();
os.close();
clientSocket.close();
} catch (IOException e) {
}
}
}
Listing Program MultiThread Client
import java.io.DataInputStream;
import java.io.PrintStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class MultiThreadChatClient implements Runnable {
// client socket
-
Siti Nurjanah (Teknik Komputer 6CB)
APLIKASI CHATING MULTICLIENT MENGGUNAKAN JAVA TEXTPAD
private static Socket clientSocket = null;
// output stream
private static PrintStream os = null;
// input stream
private static DataInputStream is = null;
private static BufferedReader inputLine = null;
private static boolean closed = false;
public static void main(String[] args) {
// default port.
int portNumber = 2222;
// default host.
String host = "10.17.193.27";
if (args.length < 2) {
System.out
.println("Usage: java MultiThreadChatClient
\n"
+ "Now using host=" + host + ", portNumber=" +
portNumber);
} else {
host = args[0];
portNumber = Integer.valueOf(args[1]).intValue();
}
/*
* Buka sebuah socket pada host dan port. Buka input dan
output streams.
*/
try {
clientSocket = new Socket(host, portNumber);
-
Siti Nurjanah (Teknik Komputer 6CB)
APLIKASI CHATING MULTICLIENT MENGGUNAKAN JAVA TEXTPAD
inputLine = new BufferedReader(new
InputStreamReader(System.in));
os = new PrintStream(clientSocket.getOutputStream());
is = new DataInputStream(clientSocket.getInputStream());
} catch (UnknownHostException e) {
System.err.println("Don't know about host " + host);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to
the host "
+ host);
}
/*
* Jika semua telah diinisialisasi lalu kita ingin menulis
data pada socket yang kita buka pada koneksi port number.
*/
if (clientSocket != null && os != null && is != null) {
try {
/* Buat sebuah thread untuk membaca dari server. */
new Thread(new MultiThreadChatClient()).start();
while (!closed) {
os.println(inputLine.readLine().trim());
}
/*
* tutup output stream, tutup input stream, tutup
socket.
*/
os.close();
is.close();
clientSocket.close();
} catch (IOException e) {
System.err.println("IOException: " + e);
}
-
Siti Nurjanah (Teknik Komputer 6CB)
APLIKASI CHATING MULTICLIENT MENGGUNAKAN JAVA TEXTPAD
}
}
/*
* buat sebuah thread untuk membaca dari server.
*/
public void run() {
/*
* tetap membaca dari socket sampai kita menerima "Bye" dari
* server. setelah diterima maka break.
*/
String responseLine;
try {
while ((responseLine = is.readLine()) != null) {
System.out.println(responseLine);
if (responseLine.indexOf("*** Bye") != -1)
break;
}
closed = true;
} catch (IOException e) {
System.err.println("IOException: " + e);
}
}
}
2. Lakukan Penyetingan IP
IP server 10.17.193.29
IP client 1. 10.17.193.30
IP client 2. 10.17.193.28
-
Siti Nurjanah (Teknik Komputer 6CB)
APLIKASI CHATING MULTICLIENT MENGGUNAKAN JAVA TEXTPAD
Jika kedua program telah selesai dibuat maka kita akan compile program tersebut dengan
menekan tombol CTRL + 1. Jika progam tidak memiliki kesalahan akan timbul pesan Tool
Compiled Successfully. Kemudian jalankan program dengan cara menekan CTRL + 2.
Adapun hasil programnya adalah sebagai berikut :
Hasil Percobaan
Dari Program yang telah dibuat dapat diketahui bahwa dengan menggunakan fungsi
socket pada java, antara komputer cilent dan server dapat saling tehubung. Dengan fungsi
Thread antara komputer client dengan client lainnya dapat saling terus menerus berkomunikasi
tanpa harus saling menunggu balasan.
Fungsi thread tersebut akan menjalankan proses pengiriman pesan disaat yang bersamaan
dan masing-masing client dapat mengetahui client yang baru bergabung pada suatu jaringan.
Percobaan yang dilakukan berjalan dengan sukses
-
Siti Nurjanah (Teknik Komputer 6CB)
APLIKASI CHATING MULTICLIENT MENGGUNAKAN JAVA TEXTPAD
Jika terjadi error mungkin terdapat kesalahan pada salah satu baris program yang
dijalankan dan dapat diketahui pada saat anda mengcompile file tersebut.