Selasa, 07 Agustus 2018

Cara Membuat Aplikasi Client-Server TCP Sederhana


SERVER
import java.io.*;
import java.net.*;
Program diatas 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, dan 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 digunakan untuk jalur komunikasi.
  public static void main(String args[]) {
    ServerSocket checkServer = null;
    String line;
    BufferedReader is = null;
    DataOutputStream os = null;
    Socket clientSocket = null;
Lalu deklarasikan variable yang dipakai di dalam program. 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);
    }
Try pertama, checkServer akan diberi nilai berupa nomor port. Lalu server akan mencetak Aplikasi Server hidup ... pada layar monitor. Jika ada error yang terjadi pada 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();
    }
Try kedua 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);
    }
Try ketiga 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();
    }
  }
}
Try keempat digunakan untuk menutup input, ouput, dan koneksi.



CLIENT
import java.io.*;
import java.net.*;
Program ini 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 program ini simpleClient, dan 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  mendeklarasikan variable yang akan dipakai di dalam program. 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);
    }
Try pertama 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);
    }
Try kedua untuk menuliskan atau mengirim pesan ke server. 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();
    }
Try ketiga untuk menerima pesan dari server dan menampilkannya. Program akan mencetak string Dari server: diikuti dengan variable output, merupakan pesan dari server.  
    try {
      is.close();
      os.close();
      cl.close();
    } catch (IOException x) {
      System.out.println("Error writing...." + x);
    }
  }
}
Try keempat untuk menutup input, ouput, dan koneksi.





1 komentar: