Saturday, April 1, 2017

PEMROGRAMAN JARINGAN DENGAN JAVA

Pada postingan kali ini, saya akan membahas tentang 
Pemrograman Jaringan dengan bahasa pemrograman Java
(Network Programming with Java). 

Bagaimana cara memrogram jaringan dengan java? 

Scroll down for details!

Note :
Pada postingan ini menggunakan bahasa pemrograman Java. Maka sebelum mencoba program dibawah ini pastikan anda sudah menginstall JDK dan pathing pada environment variables dengan benar. Program dibawah ini berbasis console yang dijalankan dengan Command Prompt (CMD), dan source code nya dapat ditulis di editor notepad atau notepad++ yang filenya disimpan dengan ekstensi *.java
Cara untuk compile file pada java :
javac (spasi) namafile.java
java (spasi) namaclass

Get IP

Get IP merupakan cara yang digunakan untuk mendapatkan alamat IP dari komputer pribadi kita. Source code untuk mendapatkan IP dapat dilihat pada program getIP.java dibawah ini :
import java.net.*;
public class getIP {
public static void main(String[]args) throws Exception {
InetAddress host = null;
host = InetAddress.getLocalHost();
byte ip[] = host.getAddress();
for (int i=0; i < ip.length; i++) {
if (i > 0) {
System.out.print(".");
}
System.out.print(ip[i] & 0xff);
}
System.out.println();
}
}

Pada baris pertama source code diatas merupakan import library java.net.* yang digunakan untuk mengimplementasikan aplikasi berbasis jaringan. Kemudian pada main method di class getIP diberikan throws exception untuk menangani kesalahan. 
Pada baris empat mendeklarasikan objek InetAddress dengan nama host yang diberi nilai awal null. Kemudian pada baris lima diberikan nilai kepada host dengan InetAddress.getLocalHost() yang digunakan untuk mendapatkan IP address. Lalu IP address tersebut disimpan kedalam variabel array bernama ip dengan tipe data byte.
Untuk menampilkan IP address yang telah didapatkan, menggunakan perulangan for dengan inisialisasi i sama dengan nol, dengan kondisi i kurang dari panjang karakter ip, dan iterasi yang bertambah. Pada perulangan ini akan dicetak ip sesuai array pada iterasi perulangan, yang jika nilai i lebih besar dari nol maka akan mencetak titik " . ", kemudian dilanjutkan dengan mencetak ip pada iterasi selanjutnya hinga mencetak IP Address secara lengkap.

Compile file getIP.java, maka akan menampilkan output seperti pada gambar berikut. Pada gambar tersebut IP lokal yang diberikan oleh komputer pribadi saya adalah 127.0.0.1

Output Get IP



Get Name

Get Name merupakan cara yang digunakan untuk mendapatkan atau melihat nama komputer pribadi kita. Source code untuk mendapatkan nama komputer dapat dilihat pada program getName.java dibawah ini :
import java.net.*;
public class getName {
public static void main(String args[]) throws Exception {
InetAddress host = null;
host = InetAddress.getLocalHost();
System.out.println("Nama komputer Anda: " +
host.getHostName());
}
}
Nama class program diatas yaitu getName. Selanjutnya, program mendeklarasikan variabel yang ada yaitu InetAddress host bernilai nul, variabel host yang bernilai InetAddress. Program akan mencetak output dengan memanggil host.getHostName().

Compile file getName.java, maka akan menampilkan output seperti pada gambar berikut. Pada gambar tersebut dapat diketahui nama komputer saya adalah DANOPA.

Output Get Name


IP to Name

IP to Name merupakan cara yang digunakan untuk melihat nama komputer berdasarkan alamat IP. Source code untuk melihat nama komputer berdasarkan IP dapat dilihat pada program IPtoName.java dibawah ini :
import java.net.*;
public class IPtoName {
public static void main(String args[]) {
if (args.length == 0) {
System.out.println("Pemakaian: java IPtoName ");
System.exit(0);
}
String host = args[0];
InetAddress address = null;
try {
address = InetAddress.getByName(host);
} catch (UnknownHostException e) {
System.out.println("invalid IP - malformed IP");
System.exit(0);
}
System.out.println(address.getHostName());
}
}
Nama class program diatas yaitu IPtoName. Pada program, terdapat percabangan if dimana kondisi panjang string sama dengan 0 dengan nilai true, maka akan mencetak nama pemakai dan IPtoName. Tapi, jika bernilai false maka program akan kembali ke semula. Selanjutnya, mendeklarasikan String host bernilai 0 dan InetAddress dengan nilai null. Perintah try dan catch digunakan jika terdapat kesalahan program, akan mencetak invalid IP – malformed IP. Bila tidak ditemukan kesalahan, program akan mencetak nama komputer user.

Compile file IPtoName.java, maka akan menampilkan output seperti pada gambar berikut. Pada gambar tersebut dapat diketahui nama komputer dengan alamat IP 127.0.0.1 adalah DANOPA.

Output IP to Name


NsLookup

NsLookup merupakan cara yang digunakan untuk mengetahui IP dari sebuah domain. Source code NsLookup dapat dilihat pada program NsLookup.java dibawah ini :
import java.net.*;
public class NsLookup {
public static void main(String[]args) {
if (args.length == 0) {
System.out.println("Pemakaian: java NsLookup <hostname>");
System.exit(0);
}
String host = args[0];
InetAddress address = null;
try {
address = InetAddress.getByName(host);
} catch(UnknownHostException e) {
System.out.println("Unknown host");
System.exit(0);
}
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();
}
}
Nama class program diatas yaitu NsLookup. Program akan mencetak (“Pemakaian: java NsLookup <hostname>”). Kemudian, mendeklarasikan string host = 0, InetAddress bernilai null, dan jika host tidak dikenal maka tampil Unknown host. Bagian byte ip didapat dai address, jika i > 0 maka program mengimport java.net kemudian akan masuk ke class NsLookup. Program utama mencetak pemakai java NsLookup kemudian mendeklarasikan string dan InetAddress. Apabila host tidak dikenal maka tampil Unknown host. Pada bagian byte ip nilai didapat dari address apabila i > 0.

Compile file NsLookup.java, maka akan menampilkan output seperti pada gambar berikut.

Output NsLookup


Aplikasi Client-Server TCP Sederhana

Program simple client dan simple server ini merupakan contoh aplikasi sederhana pemrograman jaringan untuk sistem client-server.

1     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();
}
}
}
Program ini berfungsi sebagai server. Untuk bisa menggunakan method yang berhubungan dengan jaringan (network), maka library untuk network di-import terlebih dahulu dengan menggunakan perintah import java.net.*. Pada aplikasi ini juga terdapat perintah untuk meminta masukkan dari user, maka untuk menggunakan perintah yang berhubungan dengan input-output, maka package java.io.* di-import terlebih dahulu. Aplikasi ini di-compile terlebih dahulu. 

Kemudian akan menunggu pesan dan koneksi dari program client. Jika client berhasil mengirimkan pesannya, kemudian server akan mencetak pesan, lalu server akan langsung menutup koneksi dan program akan berhenti. Pesan yang akan dicetak adalah kata kunci “salam” yang disimpan pada variabel “line”, jika pesan yang dikirim sesuai, maka program pada client akan mencetak “salam juga”, tetapi jika tidak sesuai maka program pada client akan mencetak “Maaf, saya tidak mengerti”.

2     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;
// Membuka koneksi ke server pada port REMOTE_PORT
try {
cl = new Socket("127.0.0.1", 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);
}
}
}
Program ini berfungsi sebagai client. Untuk bisa menggunakan method yang berhubungan dengan jaringan (network), maka library untuk network di-import terlebih dahulu dengan menggunakan perintah import java.net.*. Pada aplikasi ini juga terdapat perintah untuk meminta masukkan dari user, maka untuk menggunakan perintah yang berhubungan dengan input-output, maka package java.io.* di-import terlebih dahulu.

Aplikasi ini di-compile setelah server dan pastikan server sedang berjalan. Program ini akan meminta kata kunci yang telah ditetapkan pada program client. Kemudia akan mencetak “Dari server :” diikuti dengan “salam juga” maupun “Maaf, saya tidak mengerti”, tergantung dari masukkan dari user. Jika pesan dari server sudah dicetak, maka koneksi akan terputus dan program akan terhenti.


Menjalankan Aplikasi Simple Server dan Simple Client

Buka dua buah command prompt (cmd), compile file simpleServer.java pada cmd yang pertama lalu compile file simpleClient.java pada cmd yang kedua. Maka output aplikasi client-server dapat dilihat pada gambar berikut.

Setelah aplikasi server hidup, ketikkan kata "salam" pada simpleClient, maka server akan menjawab dengan "salam juga". Lebih detailnya dapat dilihat pada Output Simple Server [1] dan Output Simple Client [1]

Output Simple Server [1]

Output Simple Client [1]

Ketika program server tidak mengenali kata yang dikirimkan oleh client, maka sisi server akan menjawab dengan "Maaf, saya tidak mengerti". Lebih detailnya dapat dilihat pada Output Simple Server [2] dan Output Simple Client [2].

Output Simple Server [2]

Output Simple Client [2]



5 komentar: