Welcome to my blog, hope you enjoy reading
RSS

Sabtu, 04 Agustus 2018

Cara Membuat Aplikasi Client-Server TCP Sederhana



LISTING PROGRAM
simpleServer.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();
    }
  }
}

simpleClient.java
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);
    }
  }
}


LOGIKA PROGRAM
Pada program kali ini kita akan membuat aplikasi client-server TCP sederhana, dan disini kita akan menggunakan bahasa pemrogrograman java.
SERVER
import java.io.*;
import java.net.*;
Program ini akan memanggil semua fungsi yang terdapat pada library java.io dan java.net. Library java.io yaitu library untuk proses input dan output melalui data stream, sedangkan java.net yaitu library untuk implementasi jaringan.
public class simpleServer {
  public final static int TESTPORT = 5000;
Nama class pada program ini yaitu simpleServer, dan kita akan mendeklarasikan port 5000 yang akan digunakan sebagai jalur komunikasi.
  public static void main(String args[]) {
    ServerSocket checkServer = null;
    String line;
    BufferedReader is = null;
    DataOutputStream os = null;
    Socket clientSocket = null;
Kemudian kita akan mendeklarasikan variable yang akan dipakai di dalam program ini, yaitu : checkServer sebagai ServerSocket yang bernilai null (kosong), is sebagai BufferedReader yang bernilai null (kosong), os sebagai DataOutputStream yang bernilai null (kosong), clientSocket sebagai socket yang bernilai null (kosong), dan line dengan tipe data string.
    try {
      checkServer = new ServerSocket(TESTPORT);
      System.out.println("Aplikasi Server hidup ...");
    } catch (IOException e) {
      System.out.println(e);
    }
Pada blok try pertama, checkServer akan diberi nilai yaitu berupa nomor port. Selanjutnya server akan mencetak Aplikasi Server hidup ... pada layar monitor. Jika ada error yang terjadi pada saat server dijalankan, maka error tersebut akan ditangani oleh catch.
    try {
      clientSocket = checkServer.accept();
      is = new BufferedReader(new
      InputStreamReader(clientSocket.getInputStream()));
      os = new DataOutputStream(clientSocket.getOutputStream());
    } catch (Exception ei) {
      ei.printStackTrace();
    }
Blok try kedua digunakan untuk inisiasi is dan os sebagai objek input dan output, serta untuk menerima request client dengan clientsocket.
    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);
    }
Blok try ketiga digunakan untuk menerima dan mengirim pesan. Variable line digunakan sebagai variable penampung inputan dari client, lalu server akan mencetak Terima : diikuti dengan pesan yang diterima dari client.
Jika server menerima pesan salam, maka server akan membalas pesan salam juga. Jika server menerima pesan lainnya maka server akan membalas Maaf, saya tidak mengerti”.
    try {
      os.close();
      is.close();
      clientSocket.close();
    } catch (IOException ic) {
      ic.printStackTrace();
    }
  }
}
Blok try keempat digunakan untuk menutup input, ouput, dan koneksi.


CLIENT
import java.io.*;
import java.net.*;
Program ini akan memanggil semua fungsi yang terdapat pada library java.io dan java.net. Library java.io yaitu library untuk proses input dan output melalui data stream, sedangkan java.net yaitu library untuk implementasi jaringan.
public class simpleClient {
  public final static int REMOTE_PORT = 5000;
Nama class pada program ini yaitu simpleClient, dan kita akan mendeklarasikan port 5000 yang akan digunakan sebagai jalur komunikasi.
  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;

Kemudian kita akan mendeklarasikan variable yang akan dipakai di dalam program ini, yaitu : cl sebagai Socket yang bernilai null (kosong), is sebagai BufferedReader yang bernilai null (kosong), os sebagai DataOutputStream yang bernilai null (kosong), serta userInput dan output yang bernilai null (kosong) dengan tipe data string.
    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);
    }
Pada blok try pertama digunakan untuk memulai koneksi dengan server menggunakan port yang telah dideklarasikan sebelumnya. Jika terjadi error pada saat koneksi, maka catch akan berjalan dan memberikan pesan error yang terjadi.
    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);
    }
Blok try kedua digunakan untuk menuliskan atau mengirim pesan ke server. Pertama program akan mencetak Masukkan kata kunci: . Kemudian client akan menginput pesan yang akan disimpan di dalam variable userInput, dan akan dikirimkan ke server dengan perintah os.writeBytes().
    try {
      output = is.readLine();
      System.out.println("Dari server: " + output);
    } catch (IOException e) {
      e.printStackTrace();
    }
Blok try ketiga digunakan untuk menerima pesan dari server dan menampilkannya. Program akan mencetak string Dari server: diikuti dengan variable output, yang merupakan pesan dari server.  
    try {
      is.close();
      os.close();
      cl.close();
    } catch (IOException x) {
      System.out.println("Error writing...." + x);
    }
  }
}
Blok try keempat digunakan untuk menutup input, ouput, dan koneksi.


OUTPUT PROGRAM
·           Compile file simpleServer.java dan simpleClient.java

·           Jalankan simpleServer.java

·           Buka command prompt baru, lalu jalankan simpleClient.java, dan masukkan pesan untuk server.


·           Jika client memasukkan pesan salam, maka pada sisi server akan masuk pesan salam, dan server akan membalas pesan dari client dengan salam juga.

·           Jika client memasukkan pesan selain dari salam, maka pada sisi server tetap akan masuk pesan yang dikirim oleh client, tetapi server akan membalas pesan dari client dengan Maaf, saya tidak mengerti.












0 komentar:

Posting Komentar