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