Sabtu, 18 Mei 2013

Program Chat Sederhana Dengan Java

Halo agan2 sekalian akhir nya kita jumpa lagi ya ^_^ setelah beberapa waktu ini kita tidak dapat berjumpa hehe
kali ini agan2 sekalian saya akan mencoba berbagi ilmu mengenai pemrograman dalam bahasa java, dimana kali ini saya akan mencoba mengsharing tentang bagaimana cara membuat program chatting sederhana di dalam pemrograman java. Oke langsung saja ya agan2 sekalian berikut ini merupakan list program nya ^_^

import java.io.*;
import java.net.*;
import java.util.Scanner;

public class chat{
    static void Server() throws IOException {
        String ip;
        BufferedReader cmb=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Masukkan IP Client : ");
        ip=cmb.readLine();
        Socket client=null;
        client=new Socket(""+ip,8888);
        BufferedReader sin=new BufferedReader(new
        InputStreamReader(client.getInputStream()));
        PrintStream sout=new PrintStream(client.getOutputStream());
        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
        String s;
        while (true){
        System.out.print("Server : ");
        s=stdin.readLine();
        sout.println(s);
        s=sin.readLine();
        System.out.print("Client : "+s+"\n");
        if(s.equalsIgnoreCase("Bye"))
        break;
        }
        stdin.close();
        sout.close();
        client.close();
        sin.close();
    }

    static void Client() throws IOException {
        ServerSocket server=null;
        Socket client=null;
        try{
        server=new ServerSocket(8888);
        System.out.println("Anda telah online sebagai client");
        client=server.accept();
        System.out.println("Anda telah masuk dan bisa online");
        }
        catch(IOException e){
        System.out.println(e.getMessage());
        System.exit(-1);
        }
        System.out.println("Silahkan chat");
        InputStream masuk=client.getInputStream();
        OutputStream keluar=client.getOutputStream();
        BufferedReader in=new BufferedReader(new
        InputStreamReader(client.getInputStream()));
        PrintStream out=new PrintStream(client.getOutputStream());
        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
        String pesan;
        while (true){
        pesan=in.readLine();
        if(pesan.equalsIgnoreCase("stop"))
        {
        out.println("sampai jumpa");
        break;
        }
        System.out.println("Server : "+pesan);
        System.out.print("Client : ");
        pesan=stdin.readLine();
        out.println(pesan);
        }
        server.close();
        client.close();
        in.close();
        out.close();
        stdin.close();
    }

    public static void main(String args[]) throws IOException {
        int pil;
    System.out.println("Menu Utama");
    System.out.println("1. Client");
    System.out.println("2. Server");
    System.out.println("3. Keluar");
    System.out.println();
    System.out.println("Masukkan Pilihan Anda : ");
    Scanner input = new Scanner(System.in);
        pil = Integer.parseInt(input.next());
    switch(pil){
        case 1:
        Client();
        break;
        case 2:
        Server();
        break;
        case 3:
        System.out.println();
        System.out.println("Terima Kasih Telah Menggunakan Aplikasi Ini");
        break;
        default :
        System.out.println("Maaf Keyword Yang Anda Masukkan Salah");
        break;
    }
    }
}

nah dari listing program diatas saya akan mencoba menjelaskan sedikit mengenai program tersebut ^_^

dimulai dari bagian yang paling awal ya

import java.io.*;
import java.net.*;
import java.util.Scanner;

pada bagian ini agan2 sekalian menjelaskan bahwa program yang kita gunakan itu merupakan sebuah program yang membutuhkan input dan output data sehingga paket import java.io dalam program ini perlu diaktifkan. paket ini diaktifkan karena program yang kita buat tadi buka merupakan program yang hanya sekedar menampilkan karakter saja melainkan program yang kita buat ini dapat menerima input data melalui perangkat io.

selanjutnya import java.net, karena program chatting ini menggunakan hubungan antara jaringan komunikasi maka kita perlu mengaktifkan paket tersebut sebab dalam program ini kita menggunakan ip address dalam menghubungkan antara server dan client.

kemudian import java.util.scanner, paket ini digunakan karena dalam program yang kita buat ini terdapat tampilan menunya. fungsi dari java util scanner ini yaitu mencocokkan nilai yang kita input kan terhadap menu pilihan. Tanpa adanya paket ini maka perintah untuk membuat menu tidak akan berjalan.

oke kita berlari kepada script selanjutnya

public class chat{
    static void Server() throws IOException {
        String ip;
        BufferedReader cmb=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Masukkan IP Client : ");
        ip=cmb.readLine();
        Socket client=null;
        client=new Socket(""+ip,8888);
        BufferedReader sin=new BufferedReader(new
        InputStreamReader(client.getInputStream()));
        PrintStream sout=new PrintStream(client.getOutputStream());
        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
        String s;
        while (true){
        System.out.print("Server : ");
        s=stdin.readLine();
        sout.println(s);
        s=sin.readLine();
        System.out.print("Client : "+s+"\n");
        if(s.equalsIgnoreCase("Bye"))
        break;
        }
        stdin.close();
        sout.close();
        client.close();
        sin.close();
    }

    static void Client() throws IOException {
        ServerSocket server=null;
        Socket client=null;
        try{
        server=new ServerSocket(8888);
        System.out.println("Anda telah online sebagai client");
        client=server.accept();
        System.out.println("Anda telah masuk dan bisa online");
        }
        catch(IOException e){
        System.out.println(e.getMessage());
        System.exit(-1);
        }
        System.out.println("Silahkan chat");
        InputStream masuk=client.getInputStream();
        OutputStream keluar=client.getOutputStream();
        BufferedReader in=new BufferedReader(new
        InputStreamReader(client.getInputStream()));
        PrintStream out=new PrintStream(client.getOutputStream());
        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
        String pesan;
        while (true){
        pesan=in.readLine();
        if(pesan.equalsIgnoreCase("stop"))
        {
        out.println("sampai jumpa");
        break;
        }
        System.out.println("Server : "+pesan);
        System.out.print("Client : ");
        pesan=stdin.readLine();
        out.println(pesan);
        }
        server.close();
        client.close();
        in.close();
        out.close();
        stdin.close();
    }

    public static void main(String args[]) throws IOException {
        int pil;
    System.out.println("Menu Utama");
    System.out.println("1. Client");
    System.out.println("2. Server");
    System.out.println("3. Keluar");
    System.out.println();
    System.out.println("Masukkan Pilihan Anda : ");
    Scanner input = new Scanner(System.in);
        pil = Integer.parseInt(input.next());
    switch(pil){
        case 1:
        Client();
        break;
        case 2:
        Server();
        break;
        case 3:
        System.out.println();
        System.out.println("Terima Kasih Telah Menggunakan Aplikasi Ini");
        break;
        default :
        System.out.println("Maaf Keyword Yang Anda Masukkan Salah");
        break;
    }
    }
}

nah agan2 sekalian kita langsung masuk ke program intinya ya
disana bisa agan2 sekalian lihat bahwa ada perintah yang bernama "Public Class Chat " perintah ini menyatakan bahwa program yang kita buat ini disimpan dalam class yang bernama chat, jika agan2 sekalian ingin menyimpan program ini dengan nama yang lainnya jangan lupa di public class nya namanya juga harus dirubah sesuai dengan nama yang agan2 gunakan waktu menyimpan program nya.


   public static void main(String args[]) throws IOException {
        int pil;
    System.out.println("Menu Utama");
    System.out.println("1. Client");
    System.out.println("2. Server");
    System.out.println("3. Keluar");
    System.out.println();
    System.out.println("Masukkan Pilihan Anda : ");
    Scanner input = new Scanner(System.in);
        pil = Integer.parseInt(input.next());
    switch(pil){
        case 1:
        Client();
        break;
        case 2:
        Server();
        break;
        case 3:
        System.out.println();
        System.out.println("Terima Kasih Telah Menggunakan Aplikasi Ini");
        break;
        default :
        System.out.println("Maaf Keyword Yang Anda Masukkan Salah");
        break;
    }
    }


nah berikut ini merupakan potongan program yang digunakan sebagai tampilan menu dari program chatting ini. program ini merupakan program utama yang akan dieksekusi karena disana terdapat perintah " public static void main(String args[]) throws IOException { ", setelah perintah ini dieksekusi maka ia akan menampilkan tampilan menu seperti berikut :



nah agan2 sekalian ini lah tampilan menu dari program chatting kita. Perintah "Scanner input = new Scanner(System.in)", perintah tersebut didalam program diatas ini digunakan untuk menscan input an yang dimasukkan melalui media I/O, yang mana akan dicocokkan dengan nilai yang terdapat dalam perintah switch. Disana terlihat bahwa jika nilai inputan bernilai 1 maka program akan mengeksekusi statement client, sedangkan jika inputan bernilai 2 maka program akan mengeksekusi statement server, kemudian jika inputan bernilai 3 maka program akan keluar.

nah berikut ini merupakan potongan program yang terdapat pada bagian statement client,

static void Client() throws IOException {        ServerSocket server=null;
        Socket client=null;
        try{
        server=new ServerSocket(8888);
        System.out.println("Anda telah online sebagai client");
        client=server.accept();
        System.out.println("Anda telah masuk dan bisa online");
        }
        catch(IOException e){
        System.out.println(e.getMessage());
        System.exit(-1);
        }
        System.out.println("Silahkan chat");
        InputStream masuk=client.getInputStream();
        OutputStream keluar=client.getOutputStream();
        BufferedReader in=new BufferedReader(new
        InputStreamReader(client.getInputStream()));
        PrintStream out=new PrintStream(client.getOutputStream());
        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
        String pesan;
        while (true){
        pesan=in.readLine();
        if(pesan.equalsIgnoreCase("stop"))
        {
        out.println("sampai jumpa");
        break;
        }
        System.out.println("Server : "+pesan);
        System.out.print("Client : ");
        pesan=stdin.readLine();
        out.println(pesan);
        }
        server.close();
        client.close();
        in.close();
        out.close();
        stdin.close();
    }

nah pada bagian perintah ini "server=new ServerSocket(8888);" perintah ini menyatakan bahwa server berada dalam port 8888, antara port client dan server ini harus sama agar keduanya dapat terhubung.

kemudian pada potongan program berikut ini menjelaskan bahwa,

        InputStream masuk=client.getInputStream();
        OutputStream keluar=client.getOutputStream();
        BufferedReader in=new BufferedReader(new
        InputStreamReader(client.getInputStream()));
        PrintStream out=new PrintStream(client.getOutputStream());
        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));

program chatting ini tidak dapat melakukan pengiriman pesan secara serentak, karena antara client dan server harus menunggu terlebih dahulu balasan setelah mengirimkan pesan.

kemudian potongan berikut ini menyatakan bahwa

  if(pesan.equalsIgnoreCase("stop"))
        {
        out.println("sampai jumpa");
        break;
        }
        System.out.println("Server : "+pesan);
        System.out.print("Client : ");
        pesan=stdin.readLine();
        out.println(pesan);
        }
        server.close();
        client.close();
        in.close();
        out.close();
        stdin.close();

jika client mengirimkan pesan dengan bertuliskan "stop" maka perintah ini akan membuat client terputus koneksinya dengan server atau dengan kata lain client telah keluar dari percakapan.

selanjutnya berikut ini merupakan potongan program yang terdapat pada statement server

static void Server() throws IOException {
        String ip;
        BufferedReader cmb=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Masukkan IP Client : ");
        ip=cmb.readLine();
        Socket client=null;
        client=new Socket(""+ip,8888);
        BufferedReader sin=new BufferedReader(new
        InputStreamReader(client.getInputStream()));
        PrintStream sout=new PrintStream(client.getOutputStream());
        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
        String s;
        while (true){
        System.out.print("Server : ");
        s=stdin.readLine();
        sout.println(s);
        s=sin.readLine();
        System.out.print("Client : "+s+"\n");
        if(s.equalsIgnoreCase("Bye"))
        break;
        }
        stdin.close();
        sout.close();
        client.close();
        sin.close();
    }

pada bagian program berikut

        String ip;
        BufferedReader cmb=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Masukkan IP Client : ");
        ip=cmb.readLine();
        Socket client=null;
        client=new Socket(""+ip,8888);

menjelaskan bahwa pada saat statement server pertama kali dijalankan maka akan diminta untuk memasukkan ip dari client setelah nilai ip di input kan maka akan dihubungkan dengan ip server yang dituju setelah no ip yang dituju di temukan maka akan dicocokkan juga dengan no port nya apakah sama dengan no port yang ada pada client atau tidak, no port disana yaitu "8888" dan nilai nya sama seperti pada no port yang terdapat pada statement client.

kemudian pada potongan program berikut ini

       while (true){
        System.out.print("Server : ");
        s=stdin.readLine();
        sout.println(s);
        s=sin.readLine();
        System.out.print("Client : "+s+"\n");
        if(s.equalsIgnoreCase("Bye"))
        break;
        }
        stdin.close();
        sout.close();
        client.close();
        sin.close();

potongan program menjelaskan bahwa jika server mengirim pesan "Bye" maka itu akan membuat server mengakhiri percakapannya dengan client.

nah agan2 sekalian mungkin cukup sampai disini ya penjelasan nya ^_^ mohon maaf jika terjadi kesalahan ^_^ oke sampai jumpa lagi ya

DOWNLOAD SELENGKAPNYA