Minggu, 30 April 2017

Pemrograman Jaringan: 5/5 Aplikasi Chat Client-Server Sederhana

بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Assalamu 'alaikum warohmatullahi wabarokaatuh

Tulisan saya kali ini adalah mengenai aplikasi chat client-server sederhana menggunakan bahasa Java.
import java.io.*;
import java.net.*;
public class simpleServer {
    public final static int TESTPORT = 5000;
    public static void main(String args[]) {
        ServerSocket checkServer = null;
        String line;
        BufferedReader is = null;
        DataOutputStream os = null;
        Socket clientSocket = null;
            try {
                checkServer = new ServerSocket(TESTPORT);
                System.out.println("Aplikasi Server hidup ...");
            } catch (IOException e) {
                System.out.println(e);
            }
            try {
                clientSocket = checkServer.accept();
                is = new BufferedReader(new
                InputStreamReader(clientSocket.getInputStream()));
                os = new DataOutputStream(clientSocket.getOutputStream());
            } catch (Exception ei) {
                ei.printStackTrace();
            }
            try {
                line = is.readLine();
                System.out.println("Terima : " + line);
            if (line.compareTo("salam") == 0) {
                os.writeBytes("salam juga");
            } else {
                os.writeBytes("Maaf, saya tidak mengerti");
            }
            } catch (IOException e) {
                System.out.println(e);
            }
 
            try {
            os.close();
            is.close();
            clientSocket.close();
            } catch (IOException ic) {
            ic.printStackTrace();
            }
    }
}
import java.io.*;
import java.net.*;
Statement import digunakan untuk mendefinisikan paket yang digunakan dalam program, di sini paket yang digunakan adalah java.net yang digunakan untuk implementasi aplikasi jaringan dan java.io yang digunakan untuk proses input dan output.
ServerSocket checkServer = null;
String line;
BufferedReader is = null;
DataOutputStream os = null;
Socket clientSocket = null;
try {
    checkServer = new ServerSocket(TESTPORT);
    System.out.println("Aplikasi Server hidup ...");
} catch (IOException e) {
    System.out.println(e);
}
Lima baris pertama dari kode di atas merupakan deklarasi obyek yang akan digunakan dalam program. Kemudian terdapat blok try-catch yang berisi instansiasi obyek checkServer dengan parameter dari konstruktornya berupa nomor port. Nomor port ini harus sama agar server dan client dapat terhubung.
try {
    clientSocket = checkServer.accept();
    is = new BufferedReader(new                InputStreamReader(clientSocket.getInputStream()));
    os = new DataOutputStream(clientSocket.getOutputStream());
} catch (Exception ei) {
    ei.printStackTrace();
}
try {
    line = is.readLine();
    System.out.println("Terima : " + line);
    if (line.compareTo("salam") == 0) {
        os.writeBytes("salam juga");
    } else{
        os.writeBytes("Maaf, saya tidak mengerti");
    }
} catch (IOException e) {
    System.out.println(e);
}
Terdapat dua blok try-catch pada kode di atas. Blok try-catch yang pertama digunakan untuk menerima koneksi dengan client serta berisi instansiasi obyek untuk menerima dan mengirim data ke client. Sementara blok try-catch kedua digunakan untuk menerima, memeriksa dan mengirim data ke client.
try{
    os.close();
    is.close();
    clientSocket.close();
} catch (IOException ic){
    ic.printStackTrace();
}
 Kode di atas digunakan untuk menutup koneksi dari client.

import java.io.*;
import java.net.*;
public class simpleClient {
    public final static int REMOTE_PORT = 5000;
    public static void main(String args[]) throws Exception {
        Socket cl = null;
        BufferedReader is = null;
        DataOutputStream os = null;
        BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
        String userInput = null;
        String output = null;
        try {
            cl = new Socket(args[0], REMOTE_PORT);
            is = new BufferedReader(new
            InputStreamReader(cl.getInputStream()));
            os = new DataOutputStream(cl.getOutputStream());
        } catch(UnknownHostException e1) {
            System.out.println("Unknown Host: " + e1);
        } catch (IOException e2) {
            System.out.println("Erorr io: " + e2);
        }
        try {
            System.out.print("Masukkan kata kunci: ");
        userInput = stdin.readLine();
        os.writeBytes(userInput + "\n");
        } catch (IOException ex) {
        System.out.println("Error writing to server..." + ex);
        }
        try {
            output = is.readLine();
            System.out.println("Dari server: " + output);
        } catch (IOException e) {
        e.printStackTrace();
        }
        try {
        is.close();
        os.close();
        cl.close();
        } catch (IOException x) {
        System.out.println("Error writing...." + x);
        }
    }
}
try {
    cl = new Socket(args[0], REMOTE_PORT);
    is = new BufferedReader(new
    InputStreamReader(cl.getInputStream()));
    os = new DataOutputStream(cl.getOutputStream());
} catch(UnknownHostException e1) {
    System.out.println("Unknown Host: " + e1);
} catch (IOException e2) {
    System.out.println("Erorr io: " + e2);
}
Kode di atas digunakan untuk memulai koneksi ke server.
try{
    System.out.print("Masukkan kata kunci: ");
    userInput = stdin.readLine();
    os.writeBytes(userInput + "\n");
} catch (IOException ex) {
    System.out.println("Error writing to server..." + ex);
}
try {
    output = is.readLine();
    System.out.println("Dari server: " + output);
} catch (IOException e) {
    e.printStackTrace();
}
Terdapat dua blok try-catch pada kode di atas. Blok try-catch yang pertama digunakan untuk menerima input dari pengguna dan mengirim data ke server. Sementara blok try-catch kedua digunakan untuk menerima data dari server.
try{
    is.close();
    os.close();
    cl.close();
} catch (IOException x) {
    System.out.println("Error writing...." + x);
        }
 Kode di atas digunakan untuk menutup koneksi ke server.

Berikut adalah hasil dari program tersebut.

Tidak ada komentar:

Posting Komentar

Harap gunakan kata-kata yg sopan dalam berkomentar