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.





Senin, 06 Agustus 2018

Cara Mengetahui Alamat IP Melalui Nama Komputer (Host Name)


import java.net.*;
yaitu memanggil semua fungsi-fungsi yang ada di library java.net.
public class NsLookup {
   public static void main(String args[]) {
pada potongan program diatas dimana memiliki class yaitu NsLookup, dan program ini mempunyai sebuah main method.
      if (args.length == 0) {
         System.out.println("Pemakaian: java NsLookup <hostname>");
         System.exit(0);
      }
Jika panjang dari argumen sama dengan 0, maka akan menampilkan output dilayar [System.out.println] cara pemakaian program. Dan program akan keluar (exit) [System.exit(0)].
   String host = args[0];
   InetAddress address = null;
mendeklarasikan variable host dengan tipe data string adalah argumen ke-0 (argumen dimulai dari 0 bukan 1), dan address dengan InetAddress bernilai null (kosong). 
   try {
      address = InetAddress.getByName(host);
   } catch(UnknownHostException e) {
      System.out.println("Unknown host");
      System.exit(0);
   }
Blok try dan catch digunakan jika terdapat kesalahan program. Pada blok try akan mendapatkan alamat IP dari variable host, lalu disimpan ke dalam variable address. Kemudian pada blok catch akan menangkap eksepsi berupa UnknownHostException e, lalu program akan mencetak Unknown host, jika user salah memasukkan nama komputer (host name), dan program akan langsung keluar.
   byte[] ip = address.getAddress();
   for (int i=0; i<ip.length; i++) {
      if (i > 0) System.out.print(".");
      System.out.print((ip[i]) & 0xff);
   }
   System.out.println();
   }
}
Setelah itu membuat sebuah array bernama ip untuk mendapatkan alamat IP dari variable address. Maka  perulangan dari i sama dengan 0 sampai dengan panjang dari array ip. Terdapat percabangan if dimana jika i lebih besar dari 0 maka program akan mencetak "." jika lebih dari 0 maka program tidak akan mencetak. dan setelah itu program akan mencetak nilai dari masing - masing kelas IP yang telah disimpan di variabel ip sebelumnya.



Cara Mengetahui Nama Komputer (Host Name) Melalui Alamat IP


import java.net.*;
yaitu memanggil semua fungsi-fungsi yang ada di library java.net.
public class IPtoName {
  public static void main(String args[]) {
pada potongan program diatas dimana memiliki class yaitu IPtoName, dan program ini mempunyai sebuah main method.
    if (args.length == 0) {
      System.out.println("Pemakaian: java IPtoName <IP address>");
      System.exit(0);
    }
Jika panjang dari argumen sama dengan 0, maka program akan mencetak string Pemakaian: java IPtoName <IP address>, yang merupakan cara menulis sintaks yang benar untuk menjalankan program ini, dan program akan keluar.
  String host = args[0];
  InetAddress address = null;
mendeklarasikan variable host dengan tipe data string adalah argumen ke-0 (argumen dimulai dari 0 bukan 1), dan address dengan InetAddress bernilai null (kosong). 
  try {
    address = InetAddress.getByName(host);
  } catch (UnknownHostException e) {
    System.out.println("invalid IP - malformed IP");
    System.exit(0);
  }
  System.out.println(address.getHostName());
  }
}
Try dan catch digunakan jika terdapat kesalahan program. Pada blok try akan mendapatkan alamat IP dari variable host, lalu disimpan ke dalam variable address. Kemudian pada blok catch akan menangkap eksepsi berupa UnknownHostException e, dan program akan mencetak invalid IP - malformed IP, jika user salah memasukkan alamat IP. Apabila blok try catch sudah dilewati (user tidak salah memasukkan IP), maka program akan mencetak hostname dari variable address.







Cara Mengetahui Nama Komputer (Host Name)

import java.net.*;
yaitu memanggil semua fungsi-fungsi yang ada di library java.net.
public class getName {
     public static void main(String args[]) throws Exception {
pada potongan program diatas dimana memiliki class yaitu getName, dan program ini mempunyai sebuah main method.
          InetAddress host = null;
          host = InetAddress.getLocalHost();
          System.out.println("Nama komputer Anda: " +
          host.getHostName());
     }
}

Syntax InetAddress adalah fungsi dari library java.net untuk merepresentasikan alamat IP,InetAddress host = null akan membuat variable host dengan nilai null (kosong). fungsi inetAddress.getLocalHost() adalah fungsi untuk mengambil IP lokal host yang akan disimpan di variable host. System.out.println akan menampilkan out[ut ke layar. System.out.println. 



Cara Mengetahui Alamat IP Komputer


import java.net.*;
yaitu memanggil semua fungsi-fungsi yang ada di library java.net.
public class getIP {
     public static void main(String args[]) throws Exception {
pada potongan program diatas dimana memiliki class yaitu getIP, dan program ini mempunyai sebuah main method.
          InetAddress host = null;
          host = InetAddress.getLocalHost();
          byte ip[] = host.getAddress();
Syntax InetAddress adalah fungsi dari library java.net untuk merepresentasikan alamat IP,InetAddress host = null akan membuat variable host dengan nilai null (kosong). fungsi inetAddress.getLocalHost() adalah fungsi untuk mengambil IP lokal host yang akan disimpan di variable host.  byte ip[] = host.getAddress adalah fungsi untuk mengambil alamat IP yang akan dimasukan ke dalam array ip yang bertipe data byte.
          for (int i=0; i<ip.length; i++) {
              if (i > 0) {
              System.out.print(".");
              }
          System.out.print(ip[i] & 0xff);
          }
     System.out.println();
     }
}

Program diatas akan melakukan perulangan dimana i sama dengan 0 sampai dengan panjang dari array ip. Kemudian terdapat percabangan if dimana jika i lebih besar dari 0 maka program akan mencetak "." jika I kurang dari 0 maka program tidak akan mencetak.  setelah itu program akan mencetak nilai dari masing - masing kelas IP yang telah disimpan di variabel ip sebelumnya.