Rabu, 09 Mei 2012

Tugas Pemrograman Jaringan-Membangun Aplikasi Client-Server

Buatlah aplikasi client server TCP sederhana. Server akan membuat soket server dan
menerima permintaan koneksi dari satu client saja. Setelah itu server akan menunggu data
yang dikirim oleh client. Jika pesan yang dikirim oleh client adalah “salam” maka server akan
membalas mengirim pesan “salam juga” . Selain dari itu, server akan mengirim pesan “Maaf,
saya tidak mengerti”.


Buat program server di bawah ini, simpan dengan nama 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();
}
}
}



Buat program client di bawah ini, simpan dengan nama 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(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);
}
}
}


Lalu kompile program pada command promt file simpleServer.java dan jalankan, setelah itu simpleClient.java dan jalankan dapat dilihat pada gambar dibawah ini


Pertama kompile simpleServer.java maka akan keluar informasi "Aplikasi Server Hidup"
Gambar Server Hidup

Setelah itu kompile simpleClient.java lalu jalankan dan masukan kata kunci ke server berupa pesan "salam". Secara otomatis Client akan mendapat jawaban dari server berupa kata "salam juga".
Gambar Server Menerima Salam dari Client
Gambar Client Menerima Balasan dari Server

Gambar Client menunjukkan cara yang benar untuk menjalankan aplikasi Client yakni dengan menuliskan nama lokal komputer yang dijadikan Server, disini nama lokal komputernya adalah Rengga sehingga penulisannya adalah java Client_Server Rengga [enter].
Gambar Server Menerima Inputan bukan kata Salam dari Client
Gambar Client Menerima Balasan dari Server
Server hanya bisa menerima satu kali interaksi dari Client, sehingga bila ingin melakukan interaksi lagi harus menjalankan (menghidupkan) lagi aplikasi Server-nya. 
Gambar cmd Client menunjukkan bila Client mengetikkan kata selain "salam" misalnya kata "haiii" maka Server tidak akan mengerti dan memberikan respon "Maaf. Saya tidak mengerti". 

TUGAS PEMROGRAMAN JARINGAN



Java menyediakan obyek InetAddress yang memanfaatkan layanan sistem operasi dan jaringan diatas untuk melakukan translasi nama dan IP komputer. Demo dibawah ini memperlihatkan bagaimana menggunakan obyek InetAddress untuk mengambil IP komputer lokal (D1-1) dan nama komputer lokal (D1-2), melakukan translasi IP ke nama komputer (D1-3), serta translasi nama ke IP komputer (D1-4) (seperti perintah shell NSLookup). 



D1-1 Mengambil IP komputer lokal


Masukan Listing program ini pada notepad lalu simpan dengan nama ObtainIP.java. Simpan pada dirktori mana saja.

import java.net.*;


public class ObtainIP {
public static void main(String args[]) throws Exception {
InetAddress host = null;
host = InetAddress.getLocalHost();
byte ip[] = host.getAddress();
for (int i=0; i
if (i > 0) {
System.out.print(".");
}
System.out.print(ip[i] & 0xff);
}
System.out.println();
}
}

Simpan source code tadi dengan nama ObtainIP.java ke direktori mana saja, dan saya menyimpannya di direktori "F:\ProgJar". Setelah disimpan, kemudian buka cmd (command prompt) pada menu Start > Accessories > Command Prompt atau langsung ketikkan cmd pada menu Run untuk mengkompile dan menjalankan program tersebut. Pada cmd tersebut ketikkan :

F: [enter]

cd ProgJar [enter]

maka root direktori akan berubah menjadi "F:\ProgJar" kemudian compile program tersebut dan jalankan dengan cara sebagai berikut :


Gambar D1-1 


Setelah program tersebut dijalankan maka IP Address komputer saya akan terlihat disitu. Mengapa demikian? Karena Java menyediakan objek InetAddress yang memanfaatkan layanan sistem operasi dan jaringan untuk melakukan translasi IP Address komputer.



D1-2 Mengambil Nama komputer lokal

Buat program di bawah ini, simpan dengan nama ObtainName.java
Souce code

import java.net.*;

public class ObtainName {
public static void main(String args[]) throws Exception {
InetAddress host = null;
host = InetAddress.getLocalHost();
System.out.println("Nama komputer Anda: " +
host.getHostName());
}
}


Simpan source code tadi dengan nama ObtainName.java ke direktori mana saja, dan saya menyimpannya di direktori "F:\ProgJar".
Setelah disimpan, kemudian buka cmd (command prompt) pada menu Start > Accessories > Command Prompt atau langsung ketikkan cmd pada menu Run untuk mengkompile dan menjalankan program tersebut. Pada cmd tersebut ketikkan
F: [enter]
cd ProgJar [enter]
maka root direktori akan berubah menjadi "F:\ProgJar"
kemudian compile program tersebut dan jalankan dengan cara sebagai berikut :


Gambar D1-2

 Setelah program tersebut dijalankan maka nama lokal komputer saya akan terlihat disitu. Karena Java menyediakan objek InetAddress yang memanfaatkan layanan sistem operasi dan jaringan untuk melakukan translasi nama lokal komputer.



D1-3 Melakukan Translasi IP ke Nama Komputer


Buat program di bawah dengan nama IPtoName.java
Souce code


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());
}
}



Simpan source code tadi dengan nama IPtoName.java ke direktori mana saja, dan saya menyimpannya di direktori "F:\ProgJar". Setelah disimpan, kemudian buka cmd (command prompt) pada menu Start > Accessories > Command Prompt atau langsung ketikkan cmd pada menu Run untuk mengkompile dan menjalankan program tersebut. Pada cmd tersebut ketikkan
F: [enter]
cd ProgJar [enter]
maka root direktori akan berubah menjadi "F:\ProgJar"
kemudian compile program tersebut dan jalankan dengan cara sebagai berikut :


Gambar D1-3



D1-4 Melakukan Translasi Nama Komputer ke IP Address

Buat program ini, simpan dengan nama NsLookup.java.
Souce code

import java.net.*;

public class NsLookup {
public static void main(String args[]) {
if (args.length == 0) {
System.out.println("Pemakaian: java NsLookup ");
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
if (i > 0) System.out.print(".");
System.out.print((ip[i]) & 0xff);
}
System.out.println();
}
}


Simpan source code tadi dengan nama  NsLookup.java ke direktori mana saja, dan saya menyimpannya di direktori "F:\ProgJar".
Setelah disimpan, kemudian buka cmd (command prompt) pada menu Start > Accessories > Command Prompt atau langsung ketikkan cmd pada menu Run untuk mengkompile dan menjalankan program tersebut. Pada cmd tersebut ketikkan
F: [enter]
cd ProgJar [enter]
maka root direktori akan berubah menjadi "F:\ProgJar"
kemudian compile program tersebut dan jalankan dengan cara sebagai berikut :


Gambar D1-4