Sabtu, 12 Mei 2018

Analisa Program Pemrograman Jaringan

Berikut ini saya akan melakukan analisa terhadap beberapa listing program yang sudah diberikan oleh dosen pemrograman jaringan saya yaitu Pak Achsan. Programnya adalah getip.java, getname.java, iptoname.java, nslookup.java dan simple client-server.java. Tanpa panjang lebar lagi, berikut ini adalah hasil analisa saya.

1. getip.java
o   Listing
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();
}
}
o   Logika
Listing program diatas digunakan untuk melihat alamat IP dari computer user. Pertama kali program akan mengimport seluruh library java.net. Setelah itu, program akan membuat variable host dengan tipe data InetAddress dan tidak bernilai atau null. Kemudian, variable host tersebut diberikan nilai dengan cara getLocalHost atau mengambil nilai dari host. Setelah di deklarasi gethost, maka fungsi tersebut akan berjalan dan nilai host tersebut akan disimpan dalam array ip. Lantas nilai dari ip tersebut dimasukkan kedalam loop for untuk memberikan titik diantara angka-angka yang telah diambil oleh fungsi getLocalHost.
o   Output
2. getname.java
o   Listing
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());
}
}
o   Logika
Jika listing program diatas dijalankan maka akan memberikan output beruka nama pc user.  Pertama kali seperti biasa, program akan mengimport library. Kali ini library yang diimport adalah library java.net secara keseluruhan. Kemudian program akan mendeklarasikan variabel host yang bernilai null atau kosong dengan tipe data inetaddress. Nantinya variabel host tersebut akan berisi fungsi getlocalhost. Fungsi tersebut digunakan untuk menarik data dari local host. Setelah menarik data, program akan mencetak tulisan “Nama Komputer Anda : “ yang diikuti dengan fungsi host.gethostname.
o   Output
3. iptoname.java
o   Listing
import java.net.*;
public class IPtoName {
public static void main(String args[]) {
if (args.length == 0) {
System.out.println("Pemakaian: java IPtoName <IP address>");
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());
}
}
o   Logika
Program ini digunakan untuk menampilkan nama pc tetapi berdasarkan ipaddress yang diinputkan oleh user. Pertama kali program akan mengimport keseluruhan library java.net. kemudian, program akan dihadapkan dengan percabangan if dengan kondisi panjang argument =0. Jika kondisi terpenuhi maka program akan mencetak tulisan “Pemakaian : java IP to Name <IP address>”. Tetapi, jika kondisi tidak terpenuhi, program akan melewatkan blok program tersebut dan langsung melanjutkan ke blok selanjutnya. Blok selanjutnya adalah mendeklarasikan variabel host uang bertipe data string dan bernilai args[0]. Setelah itu, akan mendeklarasikan variabel address yang bernilai null dan bertipe data InetAddress. Setelah mendeklarasikan variabel yang dibutuhkan, blok program selanjutnya adalah perulangan try-catch. Pertama kali yang berjalan adalah perintah try, yang berfungsi untuk mengambil  name dari host yang telah diinputkan oleh user, untuk selanjutnya disimpan dalam variabel address. Bagian catch akan berjalan jika terdapat error dalam bagian try, dan akan menampilkan tulisan “Invalid IP – malformed IP”. Bagian terakhir, program akan mencetak variabel address yang terdapat blok try.
o   Output

4. nslookup.java
o   Lisitng
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();
}
}
o   Logika
Program ini digunakan untuk melihat alamat ip dari nama host yang diinputkan oleh user. Pertama kali seperti biasa, program akan mengimport library java.net. Langsung masuk ke percabangan if dengan kondisi panjang argument sama dengan 0. Jika kondisi terpenuhi, program akan mencetak “Pemakaian : java NsLookup <hostname>”.  Jika kondisi tidak terpenuhi, blok program tersebut akan dilewati dan langsung mendeklarasikan variabel host dengan tipe data string dan bernilai args[0]. Variabel yang dideklarasikan selanjutnya adalah address dengan tipe data InetAddress dan bernilai null. Langkah selanjutnya, program akan memulai perintah percabangan dengan perintah try-catch. Didalam perintah try, variabel address akan menyimpan data dari pemanggilan fungsi getbyname. Sedangkan, perintah catch akan berjalan ketika terjadi error saat program menjalankan perintah try. Jika perintah try tidak ada error, variabel address dimasukkan kedalam variabel array ip.  Kemudian array tersebut dilakukan perintah if untuk menampilkan alamat IP.
o   Output

5. client-server
o   Listing
o   Server
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();
}
}
}
o   Client
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(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);
}
}
}
o   Logika
Kedua program diatas harus dijalankan secara  bersamaan. Jika ingin membuka kedua program tersebut didalam satu PC, maka perlu membuka 2 buah command prompt. Dimana salah satu bertindak sebagai server, dan command prompt yang lainnya bertindak sebagai client.
o   Server
Pertama – tama, program akan mengimport libary java.io dan java.net secara keseluruhan. Kemudian, program akan membuat variabel testport dengan tipe data integer yang berisi port dari server yang akan digunakan. Didalam program ini juga dibutuhkan variabel bantuan yaitu checkServer, line, is, os, dan clientsocket. Variabel checkserver digunakan untuk menjalankan fungsi serversocket. Fungsi serversocket berguna untuk mengecek apakah port yang terdapat dalam variabel testport dalam berjalan atau tidak. Jika berhasil, di server akan tertulis “Aplikasi Server Hidup...” tetapi, jika gagal, program akan menghasilkan output pesan error. Blok program selanjutnya digunakan untuk memasukkan pesan yang telah dibuat oleh client dapat terbaca dan tertulis di dalam server. Jika di client memberikan pesan berupa kata “salam”, maka server secara otomatis akan membalas dengan “salam juga”. Jika server memberikan pesan selain itu, server akan membalas “Maaf, saya tidak mengerti”.
o   Client
Sistem atau cara kerjanya sebenarnya tidak jauh berbeda antara server dengan client. Perbedaannya jika di server dia mengecek apakah server dapat terhubung ke port atau tidak. Di client, mengecek apakah port yang dimasukkan sama dengan port yang tertera dalam server. Jika diserver tidak perlu ada inputan dari user tetapi di client, perlu menginputkan kata kuncinya yaitu “salam” yang nanti akan dibalas secara otomatis oleh server dengan tulisan “salam juga”. Tetapi jika keyword yang dimasukkan tidak tepat, server akan membalas “Maaf, saya tidak mengerti”.
o   Output
o   Server
o   Client


Tidak ada komentar:

Posting Komentar