Monday, May 22, 2017

Membangun Aplikasi Client - Server

Pada postingan kali ini akan membahas mengenai aplikasi Client-Server dengan menggunakan satu buah komputer sebagai client maupun server. Dibawah ini terdapat dua buah listing program yang akan digunakan sebagai Server dan sebagai Client.


Listingan InfoServer


import java.net.*; 
import java.io.*;
import java.net.*;
import java.util.*;
public class InfoServer {
private final int INFO_PORT=50000;
private String datafromClient;
public InfoServer() {
BufferedReader inFromClient;
DataOutputStream outToClient;
Socket serverSocket;
try {
ServerSocket infoServer =new ServerSocket(INFO_PORT);
System.out.println("Server telah siap");
while (true) {
serverSocket = infoServer.accept();
System.out.println("Ada client " +"yang terkoneksi!");
inFromClient =new BufferedReader(new InputStreamReader(serverSocket.getInputStream()));
outToClient =new DataOutputStream(serverSocket.getOutputStream());
outToClient.writeBytes("InfoServer versi 0.1\n"+"hanya untuk testing..\n"+"Silahkan berikan perintah TIME | NET | QUIT\n");
boolean isQUIT = false;
while (!isQUIT) {
datafromClient = inFromClient.readLine();
if (datafromClient.startsWith("TIM")) {
outToClient.writeBytes(new Date().toString() + "\n");
} else if (datafromClient.startsWith("NET")) {
outToClient.writeBytes(InetAddress.getByName("localhost").toString() +"\n");
} else if (datafromClient.startsWith("QUIT"))
{
isQUIT = true;
}
}
outToClient.close();
inFromClient.close();
serverSocket.close();
System.out.println("Koneksi client tertutup..");
}
}
catch (IOException ioe) {
System.out.print("error: " + ioe);
}
catch (Exception e) {
System.out.print("error: " + e);
}
}
public static void main(String[] args) {
new InfoServer();
}
}

Listing diatas merupakan listing program yang digunakan sebagai server yang akan dihidupkan untuk dapat melakukan komunikasi antar client dengan server. Pada sisi server ketika listing program diatas dijalankan maka akan menampilkan info "Server telah siap" dan ketika ada client yang masuk maka akan ada pemberitahuan "Ada client yang terkoneksi". Pada sisi client akan muncul tampilan pilihan yang dimiliki oleh server yaitu TIME | NET | QUIT ketika client memilih NET maka dari sisi server akan memanggil IP dari komputer dan di tampilkan pada sisi client, berlaku untuk TIME, sedangkan untuk QUIT, ketika pada sisi Client memilih QUIT maka pada sisi server akan berhenti atau server mati. Output nya akan terlihat seperti pada gambar dibawah ini




Listing InfoClient


import java.net.*; 
import java.net.*;
import java.io.*;
import java.util.*;
public class InfoClient {
private final int INFO_PORT=50000;
private final String TargetHost = "localhost";
private final String QUIT = "QUIT";
public InfoClient() {
try {
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket(TargetHost,INFO_PORT);
DataOutputStream outToServer =new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer =new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
System.out.println(inFromServer.readLine());
System.out.println(inFromServer.readLine());
System.out.println(inFromServer.readLine());
System.out.println("");
boolean isQuit = false;
while (!isQuit) {
System.out.print("Perintah Anda : ");
String cmd = inFromUser.readLine();
cmd = cmd.toUpperCase();
if (cmd.equals(QUIT)) {
isQuit = true;
}
outToServer.writeBytes(cmd + "\n");
String result = inFromServer.readLine();
System.out.println("Dari Server: " + result);
}
outToServer.close();
inFromServer.close();
clientSocket.close();
}
catch (IOException ioe) {
System.out.println("Error:" + ioe);
}
catch (Exception e) {
System.out.println("Error:" + e);
}
}
public static void main(String[] args) {
new InfoClient();
}
}

Lisring diatas merupakan listing program yang digunakan untuk sisi client. Client dapat berjalan ketika server telah hidup, client akan diberitahu ketika server telah hidup dan akan meminta client untuk memilih TIME untuk menunjukkan waktu, NET untuk melihat host dari komputer dan QUIT untuk berhenti dari program dan mematikan server. Maka akan tampil output seperti gambar dibawah ini 




Share:

Latihan NsLookup


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

Pada post kali ini akan membahas secara singkat mengenai cara mendapatkan alamat IP suatu komputer dengan menggunakan nama dari komputernya (hostname) yang terhubung ke dalam suatu jaringan.  Seperti postingan sebelumnya, bahasa pemrograman yang digunakan adalah java. 

Pada source code diatas merupakan gabungan dari postingan sebelumnya yang digunakan untuk mengetahui alamat IP suatu komputer. Jika pada postingan sebelumnya, user menggunakan IP untuk mengetahu hostname komputer maka pada source code dalam postingan ini menggunakan hostname dari komputer maka akan muncul IP yang dimiliki komputer tersebut. Dapat dilihat pada gambar dibawah ini.




Share:

Pemorgraman Jaringan - Latihan IP to Name



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

Source code diatas merupakan source code yang digunakan untuk mengetahui nama pc yang digunakan dengan menggunakan alaman IP. Pertama pada program akan mengecek parameter yang diberikan oleh user, jika tidak ada maka akan muncul pesan cara penggunaannya yaitu "Pemakaian: Java IPtoName" yaitu user memberikan IP dari PC yang digunakan. Jika alamat IP yang diberikan salah maka akan masuk ke dalam try - catch dan menampilkan pesan "invalid IP - malformed IP" namun jika IP yang diberikan sesuai dengan PC yang digunakan maka akan memunculkan nama dari PC yang memiliki IP tersebut seperti terlihat pada gambar dibawah ini




Share:

Tuesday, May 9, 2017

Pemrograman Jaringan - Latihan Get Name

Postingan kali ini akan menjelaskan source code yang digunakan untuk mengambil nama PC/Laptop yang kita miliki dengan menggunakan program java. Source code dapat di lihat di bawah 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());
}
}

Penjelasan :

Pada source code diatas menggunakan class dengan nama getName yang di lengkapi dengan library java.net.*
kemudian dengan menggunakan InetAddress yang terdapat pada libabry java.net, maka di buat sebuah variabel dengan nama host yang memiliki nilai null. Variabel host ini akan digunakan untuk memanggil fungsi getLocalHost(), dan akan menampilkan getHostName atau nama dari host yang terdapat pada PC/Laptop yang kita gunakan. Dan akan muncul output seperti gambar di bawah ini :




Share: