Aplikasi Multi Chatting dengan java textpad

11
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.

description

java, textpad, chatting

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.