Sabtu, 23 Juli 2016

Tugas PROGJAR : Pembuatan Aplikasi TCP Client dan Server Sederhana

Membuat Server TCP Sederhana

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();
        }
    }
}
    

Berikut merupakan Penjelasan dari program diatas

        ServerSocket checkServer = null;
        String line;
        BufferedReader is = null;
        DataOutputStream os = null;
        Socket clientSocket = null;
Deret perintah diatas digunakan untuk mendeklarasikan variabel objek yang dipakai pada program. Variabel checkServer merupakan objek dari ServerSocket yang diberi nilai null. Variabel line merupakan variabel yang bertipe data String, digunakan untuk menyimpan teks. Variabel is digunakan untuk objek dari class BufferedReader yang diberi nilai null. Variabel os digunakan sebagai objek dari class DataOutputStream yang diberi nilai null, terkahir merupakan variabel objek clientSocket yang merupakan objek dari class Socket.
  
        try {
            checkServer = new ServerSocket(TESTPORT);
            System.out.println("Aplikasi Server hidup ...");
        } catch (IOException e) {
            System.out.println(e);
        }
        
Merupakan deretan perintah untuk melakukan pembuatan socketserver dengan pemanggilan class ServerSocket dengan port 5000. kemudian akan mencetak "Aplikasi server hidup . . .". Jika program gagal maka akan mencetak pesan error ke terminal.
  
        try {
            clientSocket = checkServer.accept();
            is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            os = new DataOutputStream(clientSocket.getOutputStream());
        } catch (Exception ei) {
            ei.printStackTrace();
        }
        
Merupakan deretan perintah untuk melakukan menerima client yang ingin terhubung dengan server, kemudian membuat is menjadi objek yang akan digunakan untuk data yang di input oleh user, kemudian os digunakan sebagai objek output.
       line = is.readLine();
        System.out.println("Terima : " + line);

        if (line.compareTo("salam") == 0) {
            os.writeBytes("salam juga");
        } else {
            os.writeBytes("Maaf, saya tidak mengerti");
        }
        
Merupakan perintah untuk membaca input oleh user, kemudian akan memeriksa bila input berisi kata 'salam' maka akan mencetak 'salam juga' jika tidak maka akan mencetak 'Maaf, saya tidak mengerti'.
        
        try {
            os.close();
            is.close();
            clientSocket.close();
        } catch (IOException ic) {
            ic.printStackTrace();
        }
    
Merupakan perintah untuk menutup semua objek yang dipakai sebelumnya, termasuk juga dengan objek socket yang digunakan.

Membuat Client TCP Sederhana

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;
        BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
        DataOutputStream os = null;
        String userInput = null;
        String output = null;
        
        // Membuka koneksi ke server pada port REMOTE_PORT
        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);
        }
        
        // Menulis 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);
        }
        
        // Menerima tanggapan dari server
        try {
            output = is.readLine();
            System.out.println("Dari server: " + output);
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // close input stream, output stream dan koneksi
        try {
            is.close();
            os.close();
            cl.close();
        } catch (IOException x) {
            System.out.println("Error writing...." + x);
        }
    }
}
    

Berikut merupakan Penjelasan dari program diatas

        ServerSocket checkServer = null;
        String line;
        BufferedReader is = null;
        BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
        DataOutputStream os = null;
        Socket clientSocket = null;
        
Deret perintah diatas digunakan untuk mendeklarasikan variabel objek yang dipakai pada program. Variabel checkServer merupakan objek dari ServerSocket yang diberi nilai null. Variabel line merupakan variabel yang bertipe data String, digunakan untuk menyimpan teks. Variabel is digunakan untuk objek dari class BufferedReader yang diberi nilai null. Variabel os digunakan sebagai objek dari class DataOutputStream yang diberi nilai null, terkahir merupakan variabel objek clientSocket yang merupakan objek dari class Socket.
  
        try {
            cl = new Socket(args[0], REMOTE_PORT);
            is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            os = new DataOutputStream(clientSocket.getOutputStream());
        } catch (Exception ei) {
            ei.printStackTrace();
        }
        
Merupakan deretan perintah untuk membuat socket client yang ingin terhubung dengan server, kemudian membuat is menjadi objek yang akan digunakan untuk data yang di input oleh user, kemudian os digunakan sebagai objek output.
            System.out.print("Masukkan kata kunci: ");
            userInput = stdin.readLine();
            os.writeBytes(userInput + "\n");
        
Merupakan perintah untuk membaca input oleh user, kemudian akan mengirim pesan milik clinet kepada server untuk diperiksa apakah kata kunci yang di input benar atau tidak.
        try {
            output = is.readLine();
            System.out.println("Dari server: " + output);
        } catch (IOException e) {
            e.printStackTrace();
        }
        
Merupakan perintah untuk menerima pesan dari server.
        
        try {
            os.close();
            is.close();
            clientSocket.close();
        } catch (IOException ic) {
            ic.printStackTrace();
        }
    
Merupakan perintah untuk menutup semua objek yang dipakai sebelumnya, termasuk juga dengan objek socket yang digunakan.

Tidak ada komentar:

Posting Komentar