You are on page 1of 14

LAPORAN

PRAKTIKUM PEMROGRAMAN JARINGAN

DISUSUN
OLEH :
ROBERTUS (216611037)

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS KRISTEN INDONESIA TORAJA
2017/2018
A. Praktikum 1 : Membuat Aplikasi Client Server
1. Kode Program
a. Aplikasi Client

package appclient;

import java.io.*;
import java.net.*;

public class AppClient {

public static void main(String args[]) throws IOException {

Socket client = null;


InputStream in = null;
OutputStream out = null;
byte[] recvMsgSize = new byte[64];

try {
client = new Socket ("localhost",8881);
in = client.getInputStream();
out = client.getOutputStream();
} catch (IOException e) {
System.out.println(e.getMessage());
System.exit(-1);
}

String fromServer;
String fromUser;

in.read(recvMsgSize);
fromServer = new String(recvMsgSize);
System.out.println("Server:"+fromServer);
fromUser = "Salam dari Client";
System.out.println("Kirim ke server:"+fromUser);
out.write(fromUser.getBytes());
fromUser = "Ini data dari client";
System.out.println("Kirim ke Server:"+fromUser);
out.write(fromUser.getBytes());
fromUser = "Keluar";
System.out.println("Kirim ke server:"+fromUser);
out.write(fromUser.getBytes());
out.close();
in.close();
client.close();
}
}

b. Aplikasi Server

package appserver;

import java.io.*;
import java.net.*;

public class AppServer {

public static void main(String[] args) throws IOException {


ServerSocket server = null;
Socket client = null;
byte[] receiveBuf = new byte[64];
int recvMsgSize;

try {
server = new ServerSocket(8881);
System.out.println("Server started");
client = server.accept();
System.out.println("Client connected");
} catch (IOException e) {
System.out.println(e.getMessage());
System.exit(-1);
}

InputStream in = client.getInputStream();
OutputStream out = client.getOutputStream();
String data;
data = "Salam dari server";
out.write(data.getBytes());
java.util.Arrays.fill(receiveBuf, (byte)0);

while(true) {
recvMsgSize = in.read(receiveBuf);
data = new String(receiveBuf);
if(data.trim().equals("Keluar")) {
out.write(data.getBytes());
break;
}
java.util.Arrays.fill(receiveBuf, (byte)0);
System.out.println("Client: "+data);
}

out.close();
in.close();
client.close();
server.close();
}
}

2. Penjelasan Program
a. Aplikasi Client
 package appclient  appclient adalah nama package
 import java.io.*  mengimpor paket java.io agar kita dapat menggunakan
class-class untuk proses input dan output di java
 import java.net.*  mengimpor paket java.net agar kita dapat
menggunakan class-class yang berhubungan dengan jaringan
 public class AppClient  AppClient merupakan nama class yang bersifat
public
 public static void main(String args[]) throws IOException  merupakan
method utama yang memberi pengecualian Input/Output
 Socket client = null  membuat variabel client yang akan digunakan
sebagai socket dan nilainya null(tidak ada)
 InputStream in = null  membuat variabel in yang akan digunakan untuk
InputStream dan nilainya null(tidak ada)
 OutputStream out = null  membuat variabel out yang akan digunakan
untuk OutputStream dan nilainya null(tidak ada)
 byte[] recvMsgSize = new byte[64]  membuat variabel receiveBuf yang
bertipe array byte dengan jumlah indeks 64
 try {} catch () {}  ditempatkan pada kode yang mungkin mengalami
pengecualian atau kode yang dilindungi, digunakan juga untuk menangani
pesan error dan melanjutkan jalannya program tanpa harus berhenti
karena error.
 client = new Socket ("localhost",8881)  isi dari variabel client yaitu
socket baru dengan localhost dan port 8881 untuk terhubung ke server
 in = client.getInputStream()  mengambil kembalian input stream untuk
socket dan disimpan di variabel in
 out = client.getOutputStream()  mengambil kembalian OutputStream
untuk socket dan disimpan di variabel out
 System.out.println(e.getMessage())  menampilkan detail pesan
 System.exit(-1)  mengakhiri proses yang berjalan saat bernilai -1
 String fromServer  membuat variabel fromServer bertipe String
 String fromUser  membuat variabel fromUser bertipe String
 in.read(recvMsgSize)  membaca nilai byte dari variabel recvMsgSize ke
var in
 fromServer = new String(recvMsgSize)  membuat variabel fromServer
berisi nilai String dari variabel recvMsgSize
 fromUser = "Salam dari Client"  isi dari variabel fromUser
 System.out.println("Kirim ke server:"+fromUser)  menampilkan tulisan
Kirim ke server dan nilai dari variabel fromUser
 out.write(fromUser.getBytes())  menulis nilai byte pada variabel
fromUser ke variabel out
 out.close()  menutup OutputStream
 in.close()  menutup InputStream
 client.close()  menutup socket

b. Aplikasi Server
 package appserver  appserver merupakan nama paket dari aplikasi
server
 import java.io.*  mengimport paket java.io agar kita dapat
menggunakan class-class untuk proses input dan output di java
 import java.net.*  mengimport paket java.net agar kita dapat
menggunakan class-class yang berhubungan dengan jaringan komputer
 public class AppServer AppServer merupakan nama class yang bersifat
public
 public static void main(String[] args) throws IOException  merupakan
method utama yang memberi pengecualian Input/Output
 ServerSocket server = null;  membuat variabel server yang akan
digunakan sebagai serversocket dan nilainya null(tidak ada)
 Socket client = null;  membuat variabel client yang akan digunakan
sebagai socket dan nilainya null(tidak ada)
 byte[] receiveBuf = new byte[64];  membuat variabel receiveBuf yang
bertipe array byte dengan jumlah indeks 64
 int recvMsgSize;  membuat variabel recvMsgSize dengan tipe int
 try {} catch () {}  ditempatkan pada kode yang mungkin mengalami
pengecualian atau kode yang dilindungi, digunakan juga untuk menangani
pesan error dan melanjutkan jalannya program tanpa harus berhenti
karena error.
 server = new ServerSocket(8881)  server kini berisi ServerSocket baru
yang menuju ke port 8881
 System.out.println("Server started")  menampilkan tulisan server
started
 client = server.accept()  client menunggu koneksi ke socket dan
diterima oleh server
 System.out.println("Client connected")  menampilkan tulisan client
connected ketika client sudah terhubung ke server
 IOException e  class pengecualian
 System.out.println(e.getMessage());  menampilkan detail pesan
 System.exit(-1)  mengakhiri proses yang berjalan saat bernilai -1
 InputStream in = client.getInputStream()  membuat variabel in dan
nilainya merupakan kembalian input stream untuk socket
 OutputStream out = client.getOutputStream()  membuat variabel out
dan nilainya merupakan kembalian output stream untuk socket
 String data  membuat variabel data dengan tipe String
 data = "Salam dari server"  isi dari variabel data
 out.write(data.getBytes())  menulis nilai byte pada variabel data ke
variabel out
 java.util.Arrays.fill(receiveBuf, (byte)0)  memberikan nilai byte
terhadap setiap elemen bytes array
 while(true)  melakukan perulangan selama masih bernilai TRUE
 recvMsgSize = in.read(receiveBuf)  recvMsgSize sekarang berisi nilai
byte yang terbaca dari input stream dan menyimpannya ke dalam array
 data = new String(receiveBuf)  data sekarang berisi nilai String dari
variabel receiveBuf
 if(data.trim().equals("Keluar"))  jika data yang terbaca adalah
“Keluar”
 out.write(data.getBytes());  tuliskan ke output stream nilai byte
data
 break;  hentikan decision
 System.out.println("Client: "+data)  menampilkan tulisan Client dan
nilai dari variabel data
 out.close()  menutup OutputStream
 in.close()  menutup InputStream
 client.close()  menutup Socket
 server.close()  menutup ServerSocket

3. Hasil Program
a. Aplikasi Client

b. Aplikasi Server
 Sebelum terhubung dengan client
 Setelah terhubung dengan client

B. Praktikum 2 : Membuat Aplikasi Thread


1. Kode Program
a. Class MyThread

package SimpleThread;

import java.util.Calendar;
import java.text.SimpleDateFormat;

public class MyThread implements Runnable {

public void run() {


try {
while (true) {
Calendar cal = Calendar.getInstance();
SimpleDateFormat dt = new SimpleDateFormat("dd-MM-yyyy
HH:mm:ss");
System.out.println("Run on "+dt.format(cal.getTime()));
Thread.sleep(1000);
}
}
catch(Exception ex) {
}
}
}

b. Class Main

package SimpleThread;

import java.util.logging.Level;
import java.util.logging.Logger;
public class Main {

public static void main(String[] args) {


Runnable obj = new MyThread();
Thread thread1 = new Thread(obj);
thread1.start();
}
}

2. Penjelasan Program
a. Class MyThread
 package SimpleThread  SimpleThread merupakan nama package
 import java.util.Calendar  Mengimpor paket java.util.Calendar untuk
pengaturan kalender seperti tahun, bulan, tanggal, jam, dll.
 import java.text.SimpleDateFormat  mengimpor paket
java.text.SimpleDateFormat untuk mengatur format tanggal
 public class MyThread implements Runnable  MyThread merupakan
nama class yang bersifat public yang dapat menjalankan fungsi thread
 public void run()  membuat method procedure bersifat public dengan
nama run
 try {} catch () {}  ditempatkan pada kode yang mungkin mengalami
pengecualian atau kode yang dilindungi, digunakan juga untuk menangani
pesan error dan melanjutkan jalannya program tanpa harus berhenti
karena error.
 while (true)  perulangan akan terus terjadi selama bernilai TRUE
 Calendar cal = Calendar.getInstance()  membuat variabel bernama cal
yang bertipe Calendar dan nilainya akan mengembalikan waktu saat ini
dengan zona waktu default
 SimpleDateFormat dt = new SimpleDateFormat()  membuat variabel
bernama dt dengan tipe SimpleDateFormat untuk menentukan format
dan uraian tanggal sesuai dengan format tanggal yang diisi pada
SimpleDateFormat(). contoh: dd-MM-yyyy HH:mm:ss
 System.out.println("Run on ")  Menampilkan tulisan Run on
 dt.format()  mengatur format tanggal dan waktu menjadi string agar dapat
ditampilkan
 cal.getTime()  Mengembalikan tanggal dan waktu saat ini
 Thread.sleep(1000)  pengeksekusian thread akan terhenti sementara
selama 1000 milisekon
 (Exception ex)  class pengecualian

b. Class Main
 package SimpleThread  SimpleThread merupakan nama package
 import java.util.logging.Level  Mengimpor java.util.logging.Level untuk
mengatur logging level yang digunakan untuk mengontrol logging output
 import java.util.logging.Logger  Mengimpor java.util.logging.Logger
untuk mengatur pesan log untuk setiap sistem atau komponen aplikasi
 public class Main  Main merupakan nama class yang bersifat public
 public static void main(String[] args)  method utama dalam java
 Runnable obj = new MyThread()  Membuat variabel bernama obj yang
dapat menjalankan thread dengan nilainya diambil dari class MyThread
yang dibuat
 Thread thread1 = new Thread(obj)  membuat variabel thread1 dengan
tipe Thread dan variabel obj sebagai objeknya
 thread1.start()  variabel thread1 akan mulai dijalankan

3. Hasil Program

C. Praktikum 3 : Membuat Aplikasi Data Stream


1. Kode Program
a. Aplikasi InputStream

package InputStream;

import java.io.*;

public class Main {

public static void main(String[] args) {


String inputFile = "c:\\Users\\Rmy\\Desktop\\mydata.txt";
try {
InputStream input = new FileInputStream(inputFile);
/* int byteData = input.read();

while(byteData != -1) {
String strData = new String(new byte[] {(byte) byteData});
System.out.println("Data : "+strData);
System.out.println("Data byte : "+byteData);
byteData = input.read();
}
*/

byte[] myData = new byte[10];


int data = input.read(myData);
while (data != -1) {
String strData = new String(myData);
System.out.println("Data: " + strData);
System.out.println("Panjang data terbaca: " + data);
data = input.read(myData);
}

input.close();
} catch (IOException e) {
System.err.println(e.getMessage());
}
}
}

b. Aplikasi OutputStream

package OutputStream;

import java.io.*;

public class Main {


public static void main(String[] args) {
String source = "C:\\Users\\Rmy\\Desktop\\mydata.txt";
String dest = "C:\\Users\\Rmy\\Desktop\\Mydataout.txt";
try {
InputStream input = new FileInputStream(source);
byte[] byData = new byte[10];
int data = input.read(byData);

OutputStream output = new FileOutputStream(dest);

while(data !=-1) {
String strData = new String(byData);
System.out.println("Read Data: "+strData);
System.out.println("Panjang pembacaan data: "+data);
System.out.println("Tulis ke file .....");
output.write(byData);
System.out.println("done.");
data = input.read(byData);
}
input.close();
output.close();
System.out.println("Done.");
}catch(IOException e) {
System.err.println(e.getMessage());
}
}
}

2. Penjelasan Program
a. Aplikasi InputStream
 package InputStream  InputStream merupakan nama package
 import java.io.*  mengimport paket java.io agar kita dapat
menggunakan class-class untuk proses input dan output di java
 public class Main  Main merupakan nama class yang bersifat public
 public static void main(String[] args)  method utama dalam java
 String inputFile = "c:\\Users\\Rmy\\Desktop\\mydata.txt"  membuat
variabel inputFile bertipe string dimana isinya terdapat pada file
mydata.txt pada direktori c:\\Users\\Rmy\\Desktop\\mydata.txt
 try {} catch () {}  ditempatkan pada kode yang mungkin mengalami
pengecualian atau kode yang dilindungi, digunakan juga untuk menangani
pesan error dan melanjutkan jalannya program tanpa harus berhenti
karena error.
 InputStream input = new FileInputStream(inputFile)  membuat
variabel input sebagai inputStream kemudian isinya merupakan
FileInputStream pada variabel inputFile
 int byteData = input.read()  membuat variabel byteData bertipe int dan
nilainya terbaca dari variabel input
 /* ........ */  kode program yang terdapat didalamnya tidak akan
dijalankan
 while(byteData != -1)  perulangan akan terus berjalan selama byteData
tidak bernilai -1 dan akan terhenti jika byteData bernilai -1
 String strData = new String(new byte[] {(byte) byteData})  membuat
variabel strData bertipe String dan isinya merupakan hasil casting dari
nilai byte variabel byteData
 System.out.println("Data : "+strData)  menampilkan tulisan Data dan
nilai dari variabel strData
 System.out.println("Data byte : "+byteData)  menampilkan tulisan Data
byte dan nilai dari byteData
 byteData = input.read()  membaca nilai byte data dari input stream.
 byte[] myData = new byte[10]  membuat variabel myData dengan tipe
byte array sebanyak 10 indeks
 int data = input.read(myData)  membuat variabel data dengan tipe int
dan isinya merupakan hasil pembacaan variabel input yang disimpan
dalam variabel myData dalam bentuk array
 while (data != -1)  perulangan akan terus berjalan selama data tidak
bernilai -1 dan akan terhenti jika data bernilai -1
 String strData = new String(myData)  membuat variabel strData dengan
tipe String dan isinya merupakan nilai String dari variabel array myData
 System.out.println("Data: " + strData)  menampilkan tulisan Data dan
nilai dari variabel strData
 System.out.println("Panjang data terbaca: " + data)  menampilkan
tulisan Panjang data terbaca dan nilai dari variabel data
 data = input.read(myData)  membaca nilai byte data dari variabel
myData
 input.close()  menutup input stream
 IOException e  class pengecualian
 System.err.println(e.getMessage())  untuk menampilkan detail pesan

b. Aplikasi OutputStream
 package OutputStream  OutputStream merupakan nama package
 import java.io.*  mengimpor paket java.io agar dapat menggunakan
class-class dan method untuk proses input dan output di java
 public class Main  Main merupakan nama class yang bersifat public
 public static void main(String[] args)  method utama dalam java
 String source = "C:\\Users\\Rmy\\Desktop\\mydata.txt"  membuat
variabel source bertipe string dimana isinya terdapat pada file mydata.txt
pada direktori c:\\Users\\Rmy\\Desktop\\mydata.txt
 String dest = "C:\\Users\\Rmy\\Desktop\\Mydataout.txt"  membuat
variabel dest bertipe string dimana isinya terdapat pada file mydata.txt
pada direktori c:\\Users\\Rmy\\Desktop\\Mydataout.txt
 try {} catch() {}  ditempatkan pada kode yang mungkin mengalami
pengecualian atau kode yang dilindungi, digunakan juga untuk menangani
pesan error dan melanjutkan jalannya program tanpa harus berhenti
karena error.
 InputStream input = new FileInputStream(source)  membuat variabel
input sebagai inputStream kemudian isinya merupakan FileInputStream
pada variabel source
 byte[] byData = new byte[10]  membuat variabel byData dengan tipe
byte array sebanyak 10 indeks
 int data = input.read(byData)  membuat variabel data dengan tipe int
dan isinya merupakan hasil pembacaan variabel input yang disimpan
dalam variabel byData dalam bentuk array
 OutputStream output = new FileOutputStream(dest)  membuat variabel
output sebagai OutputStream kemudian isinya merupakan
FileOutputStream pada variabel dest
 while(data !=-1)  perulangan akan terus berjalan selama data tidak
bernilai -1 dan akan terhenti jika data bernilai -1
 String strData = new String(byData)  membuat variabel strData dengan
tipe String dan isinya merupakan nilai String dari variabel array byData
 System.out.println("Read Data: "+strData)  menampilkan tulisan Read
Data dan nilai dari variabel strData
 System.out.println("Panjang pembacaan data: "+data)  menampilkan
tulisan Panjang pembacaan data dan nilai dari variabel data
 System.out.println("Tulis ke file .....")  menampilkan tulisan tulis ke
file.....
 output.write(byData)  menulis byte data variabel byData ke variabel
output yang merupakan FileOutputStream
 System.out.println("done.")  menampilkan tulisan done
 data = input.read(byData)  membaca nilai byte data dari variabel
byData
 input.close()  menutup InputStream
 output.close()  menutup OutputStream
 System.out.println("Done.")  menampilkan tulisan Done.
 IOException e  class pengecualian
 System.err.println(e.getMessage())  menampilkan detail pesan

3. Hasil Program
a. Aplikasi InputStream
 Pembacaan data per karakter

 Pembacaan data sesuai indeks array


b. Aplikasi OutputStream
 Pembacaan data berdasarkan indeks array

 Hasil penulisan ke fileOutputStream Mydataout.txt

You might also like