• Tidak ada hasil yang ditemukan

Pemrograman Jaringan 0.

N/A
N/A
Protected

Academic year: 2021

Membagikan "Pemrograman Jaringan 0."

Copied!
370
0
0

Teks penuh

(1)

Pemrograman Jaringan 0

(2)

Deskripsi

• Matakuliah: Pemrograman Jaringan

• SKS: 3

• Dosen: Antonius Rachmat C, S.Kom, M.Cs

• Waktu: Senin, 7.30-10.20

• Ruang: LAB E

• Deskripsi:

– Mempelajari konsep-konsep jaringan pada

layer aplikasi dan teknik pemrogramannya

menggunakan Java

(3)

Tujuan

• memahami bagaimana Internet bekerja, arsitekturnya dan protokol TCP/IP

• memahami bagaimana input dan output pada Java • mampu mengembangkan program client dan server

dengan menggunakan protokol User Datagram Protocol (UDP) dan Transport Control Protocol (TCP)

• mampu mengembangkan aplikasi multithread

• memahami protokol Hyper-Text Transfer Protocol

(HTTP), dan mengetahui bagaimana mengakses World Wide Web menggunakan Java

• mampu mengembangkan aplikasi terdistribusi seperti Remote Method Invocation (RMI) dan CORBA

(4)

Silabus

• Perkenalan + Refresh Java

• Pengantar Jaringan 1

– Jaringan Komputer & Protokol – IP Address, Port, Socket

– TCP dan UDP – Internet

• Pengantar Jaringan 2

– Client/Server Model – Middleware

– Konsep dasar web

(5)

Silabus-2

• Java OOP – mungkin tidak perlu?

– Class, Object

– Polymorfishm, Inheritance, Encapsulation – JavaDoc

• IO dan Stream

– File

– Input, Output, Filter, dan Reader

• Pemrograman HTTP

– Protokol HTTP

– Metode Get dan Post

(6)

Silabus-3

• Pemrograman Socket

– Connection Oriented

• Threading

– Multithreading, Synchronization

• Socket Multithreading, JAR dan JDBC

– Add, insert, delete, edit

• Pemrograman Socket

(7)

Silabus-4

• Komunikasi Antar Obyek

– Obyek Serialization

• Remote Method Invocation

– Konsep & Aplikasi

• CORBA

– Konsep & IDL

(8)

Daftar Pustaka

• Budi Susanto, Pemrograman Client/Server dengan Java 2, 2003, Jakarta : PT. Elexmedia Komputindo

• Elliotte Rusty Harold, Java Network Programming, 3rd Edition, 2004, O’Reilly

• Vinay Chhabra, A Beginners Guide to RMI,

www.universalteacher.com

• Java™ Network Programming and Distributed

Computing by David Reilly & Michael Reilly, Addison Wesley, 2002

• An Introduction to Network Programming with Java, Jan Graba, Springer, 2007

• Java Cookbook, 2nd Edition, Ian F. Darwin, O'Reilly, 2004

(9)

Distribusi Nilai

• 85-100

A

• 80-<85

A-• 75-<80

B+

• 70-<75

B

• 65-<70

B-• 60-<65

C+

• 55-<60

C

• 45-<55

D

• <45

E

(10)

Komponen Penilaian

• TTS

: 25

• TAS

: 25

• Tugas : 15

– Carilah program jaringan di Internet yang sdh

jadi, analisa, buat laporannya, kumpul TTS!

• Tugas Lab: 35

(11)

Pengantar Java

• Java adalah bahasa pemrograman yang sangat powerfull • Write Once Run Everywhere - multiplatform

• Mendukung OOP murni • Versi terbaru 1.6

• J2RE = runtime environment • J2SE = standard edition

– J2SE can be used to develop client-side standalone applications or applets.

• J2EE = enterprise edition

– J2EE can be used to develop server-side applications such as Java servlets and Java ServerPages.

• J2ME = micro edition

– J2ME can be used to develop applications for mobile devices such as cell phones.

(12)

Sejarah

• Java pertama lahir dari The Green Project,

yang berjalan selama 18 bulan, dari awal

tahun 1991 hingga musim panas 1992.

• Proyek ini dimotori oleh Patrick Naughton,

Mike Sheridan, James Gosling dan Bill

Joy, beserta sembilan pemrogram lainnya

dari Sun Microsystems.

• Lahirlah maskot Duke yang dibuat oleh

Joe Palrang

(13)

Sejarah (2)

• Nama Java pertama adalah project Oak,

diambil dari pohon oak yang tumbuh di depan

jendela ruangan kerja James Gosling.

• Nama Oak ini tidak dipakai untuk versi release

Java karena sebuah perangkat lunak sudah

terdaftar dengan merk dagang tersebut,

sehingga diambil nama penggantinya menjadi

"Java".

• Nama Java ini diambil dari kopi murni yang

digiling langsung dari biji (kopi tubruk) kesukaan

Gosling.

(14)

The Java programming

environment

Compared to C++: simple

– no header files, macros, pointers and references, unions, operator overloading, templates, etc.

Object-oriented

Distributed: RMI, Servlet, Distributed object programming.

Robust: Strong typing + no pointer + garbage collector

Secure: Type-safety + access control

Architecture neutral

Portable

Compiled & Interpreted

– High performance

– Just in time compilation + runtime modification of code • Multi-threaded

(15)

The Java programming

environment

Java byte code: Intermediate representation for Java programs

Java compiler: Transform Java programs into Java byte code

Java interpreter: Read programs written in Java byte code and

execute them

Java virtual machine: Runtime system that provides various services

to running programs

Java programming environment: Set of libraries that provide

services such as GUI, data structures,etc.

Java enabled browsers: Browsers that include a JVM + ability to

(16)

Editor

• Rekomendasi text editor: Jcreator dan

KAWA Java Editor

• Rekomendasi GUI editor: NetBeans,

Jbuilder, dan Eclipse, Xcode IDE (for

MAC)

(17)
(18)

Prinsip Pembuatan

• pada satu file source java ( .java ) hanya diperbolehkan terdapat definisi satu public class.

• dalam satu public class java akan mencari sebuah method (subprogram) yang bersifat statis dan public yang bernama main.

• method main ini menerima parameter array string. • Jika ditemukan maka Java akan mengeksekusi blok

perintah dalam method main tersebut. Jika tidak ada method main maka Java tidak akan mengeksekusi apapun.

• Tanpa method main, program Java bisa dikompilasi, tidak bisa dieksekusi

• Sintaks penulisan keyword ataupun identifier dalam Java bersifat case-sensitive.

(19)

How are Java programs

written?

• Define a class HelloWorld and store it into a file: HelloWorld.java:

public class HelloWorld {

public static void main (String[] args) { System.out.println(“Hello, World”); } } • Compile HelloWorld.java javac HelloWorld.java Output: HelloWorld.class • Run java HelloWorld Output: Hello, World

(20)

Compilation & Execution Phase

Source Code Create/Modify Source Code

Compile Source Code i.e. javac Welcome.java

Bytecode

Run Byteode i.e. java Welcome

Result

If compilation errors

If runtime errors or incorrect result

Java Interpreter on Windows Java Interpreter on Sun Solaris Java Interpreter on Linux Bytecode ...

(21)

Compiling and Running

HelloWorld.java

javac HelloWorld.java

java HelloWorld

HelloWorld.class

compile run

bytecode source code

(22)

Java bytecode and interpreter

• bytecode is an intermediate representation

of the program (class).

• The Java interpreter starts up a new

“Virtual Machine”.

• The VM starts executing the users class

by running it’s

main()

method.

(23)

PATH and CLASSPATH

• The java_home/bin directory is in your

$PATH

• If you are using any classes outside the

java or javax package, their locations are

included in your $CLASSPATH

(24)

Anatomy of a Java Program

• Comments : // dan /* … */

• Package : dianalogikan sebagai folder

• Modifiers : public, private, protected

• Statements : diakhiri dengan semicolon (;)

• Blocks :

• Classes :

a template or blueprint for

objects

• Methods : behaviour / function of class

• The main method

public class Test {

public static void main(String[] args) { System.out.println("Welcome to Java!"); }

}

Class block Method block

(25)

Tipe Data

• Terdapat beberapa tipe data primitif atau

dasar :

– Numerik bulat: int, byte, short, long

– Numerik pecahan: float, double

– Logika: boolean

– Karakter: char

(26)

Reference Types

• Objects and Arrays are reference types

• Primitive types are stored as values.

• Reference type variables are stored as

references (pointers that we can’t mess

with).

(27)

Primitive vs. Reference Types

int x=3;

int y=x;

Point p = new Point(2.3,4.2);

Point t = p;

Point p = new Point(2.3,4.2);

Point t = new Point(2.3,4.2);

There are two copies of the value 3 in memory

There is only one Point object in memory!

(28)

How are variables declared?

Fibonacci:

class Fibonacci {

public static void main(String[] arg) { int lo = 1; int hi = 1; System.out.println(lo); while (hi < 50) { System.out.println(hi); hi = lo + hi; lo = hi – lo; } } }

(29)

How to define expressions?

• Arithmetic: +, -, *,/, %, =

8 + 3 * 2 /4

Use standard precedence and associativity rules

• Predicates: ==, !=, >, <, >=, <=

public class Demo {

public static void main (String[] argv) { boolean b;

b = (2 + 2 == 4);

System.out.println(b); }

(30)

Casting

• Casting diperlukan ketika kita akan

“memaksa” penyesuaian dari satu tipe

data ke tipe data lain.

• Pada pemrograman berbasis objek

casting diperlukan untuk menyesuaikan

suatu tipe objek (class) ke tipe objek

(31)
(32)

Konversi/Casting

• Widening conversions

– int a = 123123123;

– float b = a; //ok

• Narrowing conversions

– long a = 123123L

– int b = a; //compiler error

– int b = (int) a; //ok

– long d = 123123123123L

(33)

Konversi Tipe Data

• Konversi String ke Numerik

– int i = Integer.valueOf(“22”).intValue();

– long l = Long.valueOf(“23132323”).longValue();

– double x = Double.valueOf(“20100.025”).doubleValue(); – float y = Float.valueOf(“200.45”).floatValue();

(34)

Konversi Tipe Data

• Non Decimal Integer

• To convert string containing the hexadecimal

number "F7" to an integer

(35)

Number to string conversion

• Concatenation (+): Anything concatenated to a string is converted to string (eg, "weight = " + kilograms).

• java.text.DecimalFormat gives you precise control over the formating of numbers (number of decimal places, scientific notation, locale formatting, ...).

• Individual wrapper class methods, eg, Integer.toString(i). concatenation works as well for the simple cases, but

there are some interesting additional conversions here. • No conversion required. Some common system methods

(36)

Contoh

• Contoh 1:

float price = 23.99f;

String priceStr = "" + price;

• Contoh 2:

int years = 22;

(37)
(38)

How are simple methods

defined?

Every method is defined inside a Java class definition

public class Movie {

public static int movieRating(int s, int a, int d) { return s+a+d;

} }

public class Demo {

public static void main (String argv[]) {

int script = 6, acting = 9, directing = 8; displayRating(script, acting, directing); }

public static void displayRating(int s, int a, int d){ System.out.print(“The rating of this movie is”); System.out.println(Movie.movieRating(s, a, d)); }

(39)

Tidak bisa pada int

(40)

Flow Control

• IF Syntax :

– if(kondisi) <statement> – If(kondisi) { <statements> } else { <statements> }

(41)

Flow Control

(42)

Perulangan

• while(kondisi) { <statements> }

• do{ <statements> } while(kondisi);

• for(<init> ; <kondisi> ; <inc/dec>) {

<statements> }

(43)

Inputan

• Menerima input dari user:

– Menggunakan java.util.Scanner Scanner s = new Scanner(System.in); System.out.print("nama : ");

String nama = s.next();

System.out.println("nama anda : " + nama);

– Menggunakan Argumen dari parameter String args[] dalam method main.

• Masing-masing inputan dipisahkan menggunakan spasi. • Setiap input diterima sebagai String sesuai urutannya.

– Menggunakan BufferedReader

String userInput = null;

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

userInput = br.readLine();

– Menggunakan JOptionPane

String coba = JOptionPane.showInputDialog(null,"Inputkan angka","Input",JOptionPane.OK_CANCEL_OPTION);

(44)
(45)

Array pada Java

• int[] myArray = {1,2,3};

• int[] myArray2 = new int[4];

– myArray2[0] = 1;

• int[][] duaD = new int[2][2];

– duaD[i][j] = 1;

• Gunakan length untuk mengetahui jml elemen

array

• If the value of an index is negative or greater

than the array length then an

(46)

Matriks

•Buatlah kelas bernama Matriks

(47)
(48)

Tugas

• Buatlah sebuah class bernama UserInput yang

berguna untuk menerima inputan dari pengguna

dari Console, menggunakan BufferedReader

– Method getInt

– Method getDouble – Method getString

• Kemudian gunakan untuk membuat program

perhitungan luas segitiga, persegi panjang, dan

lingkaran (dalam bentuk menu)

(49)

Pemrograman Jaringan 1

(50)

Lanjutan kelas Matriks

• Throw Exception

• Gunakan dalam Penjumlahan dan

Perkalian Matriks

(51)

Exception

• Dalam judul method:

– void namaMethod() throws Exception { .. }

• Dalam if: if(kondisi) { … } else throw

Exception();

(52)

A Communications Model

• Source

– Menghasilkan data untuk ditransmisikan • Transmitter

– Mengkonversikan data ke dalam sinyal yang bisa ditransmisikan

• Transmission System

– Sistem pembawa data • Receiver

– Mengkonversi sinyal yang diterima ke dalam data • Destination

(53)

Network Program

• Dengan jaringan, sebuah program jaringan

dapat menerima informasi dari seluruh komputer

yang ada diseluruh dunia. Dapat juga

berkomunikasi dengan banyak orang diseluruh

dunia, namun juga dapat mengancam

komputer-komputer diseluruh dunia (seperti DIE HARD 4?)

• Program jaringan yang simple dan terkenal

adalah client server

– Contoh: browser-web server, chatting/messenger, multiplayer games, peer-to-peer applications seperti Gnutella.

(54)

Apa yg dapat dilakukan NP?

• Retrieve Data

– Paling banyak dipakai

– Cth: browser, RSSReader

• Send Data

– Cth: File Storage , Grid Computing

• Peer to Peer Interaction

– Cth: Games, Chat/Messenger, File Sharing

• Web Based Application: ex Search Engine

• E-Commerce

(55)

Applications of Network

Programming

• Network Tools

– traditional: telnet, ftp, rsh, rlogin, SMTP,

• Internet Tools

– gopher, HTTP, NTP, Chat rooms

• Collaborative Tools

– Application Sharing , Desktop Conferencing, Distance Learning

• Distributed Object Computing

– SUN RPC, CORBA, JAVA RMI

(56)

IRI: Interactive Distance

Learning

(57)

MASH: Internet-based Video

Conferencing

(58)

Networking

• Point to point communication: tidak praktis

– Devices terlalu jauh

– Kumpulan device akan membutuhjan koneksi

yang sangat banyak

(59)

Computer Network

• Jaringan komputer adalah seperangkat

komputer otonom yang saling terhubung

yang secara eksplisit terlihat, sehingga

dapat saling bertukar informasi/data, dan

berbagai (share) satu dengan yang

(60)

Networking Concept

• Setiap mesin dalam sebuah jaringan disebut “node”. • Node dapat berupa komputer, printer, router, bridge,

gateway dan lain-lain.

• Node-node yang berupa komputer yang memiliki fungs disebut “host”.

• Setiap node memiliki alamat tertentu yang disebut IP. • Alamat yang dipakai harus berbeda-beda.

– Setiap host selalu memeriksa setiap alamat yang ada agar jangan sampai sama

– Jika suatu alamat sudah dipakai maka akan secara random membuat alamat yang baru sampai alamatnya tidak sama dengan yang lain dalam satu jaringan yang sama.

(61)

Networking Concept

• Kini, alamat jaringan dapat menggunakan

“nama” sehingga manusia dapat lebih mudah

mengingatnya.

• Pada kenyataannya “nama” ini akan diubah

dahulu menjadi alamat byte pada saat

pemrosesan.

– Hal ini diatur oleh DNS (Domain Name System).

• Satu atau lebih nama harus mewakili satu

alamat byte fisik.

– Hal ini akan diatur oleh Server Alias pada Server.

– Misalnya : localhost dan antonie.com dapat menunjuk pada satu alamat IP yang sama yaitu 127.0.0.1

(62)

Jenis Jaringan Komputer

LAN (Local Area Network). Kecepatannya tinggi untuk suatu lingkungan lokal tertentu saja.

MAN (Metropolitan Area Network). Kecepatannya

masih tinggi untuk suatu lingkungan yang cukup jauh. Biasanya menyediakan backbone untuk koneksi ke

internet.

WAN (Wide Area Network). Untuk koneksi jaringan

dengan jarak yang sangat jauh. Merupakan gabungan dari infrastruktur jaringan yang heterogen. Contoh : Internet.

Wireless Area Network. Pengaksesan jaringan dengan menggunakan gelombang radio pendek.

(63)

Pengiriman Data

• Dua jenis teknologi switching:

– Circuit switching

– Packet switching

• Data dikirim dari satu node ke node lain.

• Pengiriman tidak dilakukan sekaligus

(64)

Circuit Switching

• Untuk komunikasi 2 stasiun / node

– Transfer

– Disconnect

• Harus memiliki kemampuan routing

• Biasa dipakai pada jaringan telepon

(65)

Circuit Switching - Applications

• Inefficient

– Channel capacity didedikasikan untuk suatu koneksi, jika tidak ada data, maka kapasitasnya mubazir

• Set up (connection) butuh waktu

• Circuit switching didesain untuk voice

– Resources didedikasikan untuk suatu panggilan tertentu

– Jika idle, waktu banyak terbuang – Data rate is fixed

(66)

Packet Switching Principles

• Data transmitted in small packets

– Typically 1000 bytes

– Longer messages split into series of packets

– Each packet contains a portion of user data plus some control info

• Control info

– Routing (addressing) info

• Packets are received, stored briefly (buffered)

and past on to the next node

(67)

Switching Technique

• Station breaks long message into packets

• Packets sent one at a time to the network

• Packets handled in two ways

– Datagram

(68)

Datagram

• Each packet treated independently

• Packets may arrive out of order

• Packets may go missing

• Up to receiver to re-order packets and

recover from missing packets

(69)

Protocols

• Untuk berkomunikasi antar aplikasi dalam sistem • Harus berkomunikasi menggunakan “bahasa yang

sama” • Entities – User applications – e-mail facilities – terminals • Systems – Computer – Terminal – Remote sensor

(70)

Protocol Architecture

• Tugas-2 komunikasi dibagi kedalam

modul-2 / bagian-2.

• Contoh: file transfer dibagi ke dalam 3

modul:

– Aplikasi file transfer

– Modul Communication service

– Modul Network access

(71)

TCP/IP Protocol Architecture

• Developed by the US Defense Advanced

Research Project Agency (DARPA) for its packet

switched network (ARPANET)

• Used by the global Internet

• No official model but a working one.

– Application layer

– Host to host or transport layer

– Internet layer

– Network access layer

– Physical layer

(72)

TCP/IP Protocol Architecture(1)

• Application Layer

– Communication between processes or applications

• Host to host, or transport layer (TCP/UDP/…)

– Reliable delivery of data – Ordering of delivery

• Internet Protocol

– Menentukan jalur: jalur yang ditempuh antara pengirim dan penerima.

– Switching: memindahkan paket dari input router ke output router yang sesuai.

– Call Setup: beberapa arsitektur jaringan membutuhkan setup koneksi dahulu.

(73)

TCP/IP Protocol Architecture(2)

• Network Layer

– Logical interface between host and network

• Physical Layer

– Transmission medium

(74)

TCP

• Transmission Control Protocol, pada transport layer

– Reliable connection

• Adanya pengecekan error • Dijaga urutan message

• Komunikasi duplex – dua arah • Segmentasi - TCP PDU

– Called TCP segment

– Includes source and destination port

• Identify applications

• Connection refers to pair of ports

• TCP tracks segments between entities on each connection

(75)

UDP

• User Datagram Protocol

• Not guaranteed delivery

• No preservation of sequence

• No protection against duplication

• Minimum overhead

• Adds port addressing to IP

• Contoh: DNS, streamming

(76)

OSI Model

• Open Systems Interconnection

• Developed by the International

Organization for Standardization (ISO)

• Seven layers

• A theoretical system delivered too late!

• TCP/IP is the de facto standard

(77)

OSI Layers

• Application

• Presentation

• Session

• Transport

• Network

• Data Link

• Physical

(78)
(79)

Port Service

• Echo, port 7

– Echo is a test protocol used to verify that two machines are able to connect by having one echo back the other's input.

• FTP

– Port 20 is used to transfer files.

– Port 21 is used to send FTP commands like put and get.

• SSH, port 22

– Used for encrypted, remote logins.

• Telnet, port 23

– Used for interactive, remote command-line sessions.

• Smtp, port 25

(80)

Port Service

• HTTP, port 80

– The underlying protocol of the World Wide Web.

• POP3, port 110

– protocol for the transfer of accumulated email from the host to sporadically connected clients.

• NNTP, port 119

– Usenet news transfer; more formally known as the "Network News Transfer Protocol".

• IMAP, port 143

– Internet Message Access Protocol is a protocol for accessing mailboxes stored on a server.

• RMI Registry, port 1099

(81)

Internet v internet

• The Internet is the world's largest IP-based

network.

• internet adalah interconnection network

dalam suatu jaringan tertentu misalnya

dalam perusahaan

(82)

Tujuan Internet RFC 871

• Resource sharing between networks

– Internet must support a variety of networking

gateways

• Interoperability

– Internet must support a variety of networking

gateways

• Reliability and robustness

• Efficient and Simple

(83)

Security Issues

• Firewall

– Mesin khusus yang dikonfigurasikan untuk menjaga sesuatu yang merusak dan menjaga incoming dan outgoing data.

– Biasanya firewall system akan membatasi suatu akses keluar komputer dengan membatasi services yang tidak perlu untuk meminimalisasi potensi

cracking/hacking

– The firewall works by intercepting incoming communication from machines on the Internet, an outgoing communication from machines within a local area network.

– It operates at the packet level, intercepting IP datagrams that reach it. By

examining the header fields of these datagrams, the firewall can tell where the datagram is heading and from where it

(84)

Security Issues

• Proxy Server

– Sebuah mesin yang bertindak sebagai proxy untuk protokol aplikasi.

– Server menerima koneksi yang masuk dari local network dan membuat request ke mesin yang terkoneksi dengan Internet

– 2 Keuntungan:

• Akses langsung ke internal machines tidak pernah terjadi dan proxy server dapat mengkontrol transaksi.

– Hak akses HTTP dapat dibatasi terhadap website-website

tertentu saja, dan akses ke RealAudio atau Game dan software aplikasi lain juga tidak bisa dilakukan

(85)

Praktikum

• Masih teori, jadi masih refresh PBO!

• Buatlah kelas Point, Line, Polygon,

Rectangle, dan Triangle

• Baca method-methodnya dari javadoc

yang disediakan

(86)
(87)

Pemrograman Jaringan 2

anton@ukdw.ac.id

(88)

Minggu Lalu?

• Kumpulkan tugas

• Pembahasan

(89)

Client-Server Model

• Model Client-Server tidak lepas dari sistem

terdistribusi

• Sistem Terdistribusi:

"A system in which hardware or software

components located at networked computers

communicate and coordinate their actions only

by message passing." [Coulouris]

• Dalam SisTer komputer-komputer yang saling

terhubung, tidak terlihat secara fisik

(90)

Distribusi Fungsi

• Dengan pembagian fungsi untuk tiap

komponen dalam sistem client server,

berikut manfaat yang ada :

– Berbagi resource

– Berbagi beban kerja

– Tidak membedakan platform

– Meningkatkan efisiensi

(91)

Software Layer

• Arsitektur Software

– Lapisan atau modul dalam sebuah komputer tunggal

– Mendefinisikan layanan yang ditawarkan atau diminta antar proses pada satu atau berbeda komputer

– Ide dasarnya membagi sistem yang komplek dalam struktur lapisan dan layanan.

• Antar layer mendefinisikan antar muka

(92)

Middleware

• Software yang berfungsi sebagai lapisan

konversi atau penerjemah.

• S/W penghubung yang berisi sekumpulan

layanan yang memungkinkan beberapa proses

dapat berjalan pada satu atau lebih mesin untuk

saling berinteraksi pada suatu jaringan

• Juga sebagai integrator.

• Middleware saat ini dikembangkan untuk

memungkinkan satu aplikasi berkomunikasi

dengan lainnya walaupun berjalan pada platform

yang berbeda.

(93)

Contoh Middleware

• Java’s: Remote Procedure Call

• Object Management Group's: Common

Object Request Broker Architecture

(CORBA)

• Microsoft's COM/DCOM (Component

Object Model)

(94)

Layanan Middleware

• Menyediakan kumpulan fungsi API (Application

Programming Interfaces) yang lebih tinggi

daripada API yang disediakan sistem operasi

dan layanan jaringan yang memungkinkan suatu

aplikasi dapat :

– Mengalokasikan suatu layanan secara transparan pada jaringan

– Menyediakan interaksi dengan aplikasi atau layanan lain

– Diperluas (dikembangkan) kapasitasnya tanpa kehilangan fungsinya

(95)

Contoh Layanan Middleware

• Transaction Monitor

– Produk pertama yang disebut middleware.

– Menempati posisi antara permintaan dari program client dan database, untuk menyakinkan bahwa semua transaksi ke database terlayani dengan baik

• Messaging Middleware

– Menyimpan data dalam suatu antrian message jika mesin tujuan sedang mati atau overloaded

– Mungkin berisi business logic yang merutekan message ke ujuan sebenarnya dan memformat ulang data lebih tepat – Sama seperti sistem messaging email, kecuali messaging

(96)

Contoh Layanan Middleware

• Distributed Object Middleware

– Contoh: RPC, CORBA dan DCOM/COM

• Middleware basis data

– menyediakan antarmuka antara sebuah query

dengan beberapa database yang terdistribusi

– Contoh: JDBC, ODBC, dan ADO.NET

• Application Server Middleware

– J2EE Application Server, Oracle Application

Server

(97)

Pengertian Client-Server

• Client/Server dapat diartikan sebagai

kemampuan komputer untuk meminta layanan

request data kepada komputer lain.

• Setiap instance dari komputer yang meminta

layanan disebut sebagai client, sedangkan

setiap instance yang menyediakan layanan

disebut sebagai server.

• Data yang diminta oleh client dapat diambil dari

database pada sisi server yang sering disebut

database server, seperi misalnya MySQL,

(98)

Three Tier Client-Server

Architecture

(99)

Client-Server Characteristics

• Client dan Server merupakan item proses (logika) terpisah yang bekerja sama pada suatu jaringan komputer untuk mengerjakan suatu tugas:

• Service : Menyediakan layanan terpisah yang berbeda • Shared resource : Server dapat melayani beberapa

client pada saat yang sama dan mengatur pengaksesan resource

• Asymmetrical Protocol : antara client dan server

merupakan hubungan one-to-many. Client memulai

komunikasi dengan mengirim request ke server. Server menunggu permintaan dari client. Kondisi tersebut juga memungkinkan komunikasi callback.

(100)

Client-Server Characteristics

• Transparency Location : proses server dapat

ditempatkan pada mesin yang sama atau terpisah dengan proses client. Client/server akan

menyembunyikan lokasi server dari client.

• Mix-and-match : tidak tergantung pada platform

• Message-based-exchange : antara client dan server

berkomunikasi dengan mekanisme pertukaran message. • Encapsulation of service : message memberitahu server

apa yang akan dikerjakan

• Scalability : sistem C/S dapat dimekarkan baik vertikal maupun horisontal

• Integrity : kode dan data server diatur secara terpusat, sedangkan pada client tetap pada komputer tersendiri

(101)

Client-Server Characteristics

• Characteristics of a client

– Initiates requests

– Waits for and receives replies

– Usually connects to a small number of servers at one time

– Typically interacts directly with end-users using a graphical user interface

• Characteristics of a server

– Passive (slave)

– Waits for requests from clients

– Upon receipt of requests, processes them and then serves replies

– Usually accepts connections from a large number of clients – Typically does not interact directly with end-users

(102)

Advantages

• Client-server mampu menciptakan aturan dan kewajiban komputasi secara terdistribusi.

• Mudah dalam maintenance. Memungkinkan untuk mengganti, memperbaiki server tanpa mengganggu client.

• Semua data disimpan di server Server dapat

mengkontrol akses terhadap resources, hanya yang memiliki autorisasi saja.

• Tempat penyimpanan terpusat, update data mudah. Pada peer-to-peer, update data sulit

• Mendukung banyak clients berbeda dan kemampuan yang berbeda pula.

(103)

Disadvantages

• Traffic congestion on the network, jika banyak

client mengakses ke server secara simultan,

maka server akan overload

– Berbeda dengan P2P network, dimana bandwidthnya meningkat jika banyak client merequest. Karena

bandwidth berasal dari semua komputer yang terkoneksi kepadanya.

• Pada client-server, ada kemungkinan server fail.

– Pada P2P networks, resources biasanya

didistribusikan ke beberapa node sehingga masih ada node yang dapat meresponse request.

(104)

KONSEP DASAR WEB

• Protocol yang digunakan: HTTP (port 80)

• Bahasa Web: HTML

URI (Uniform Resource Identifier)

Uniform Resource Identifier (URI) adalah kumpulan karakter dalam sintaks tertentu yang mengidentifikasi sebuah resource.

– Resource bisa merupakan file di server tapi juga bisa

merupakan email address, berita, buku, host internet, dan lain-lain.

Sintaks : scheme:scheme-specific-part

scheme bisa berupa : data, file, http, ftp, gopher, mailto, news,

telnet.

scheme-specific-part bisa berupa : //authority/path?query

(105)

URI

URN (Uniform Resource Name)

• Tujuan URN adalah menghandle resource yang dimirror pada

banyak tempat yang berbeda atau telah dipindah dari satu tempat ke tempat lain. URN mengidentifikasi resource itu sendiri, bukan tempat resourcenya. Jika terdapat sebuah URN, sebuah program FTP harus mengambil filenya dari mirror terdekat.

• Sebuah URN memiliki format sebagai berikut

urn:namespace:resource_name.

• Sebuah namespace adalah nama dari koleksi dari resource.

Sebuah resource_name adalah nama dari resource dari sebuah koleksi.

• Contohnya, URN dari urn:ISBN:1565924851 mengindentifikasikan sebuah dalam ISBN dengan identifikasi 1565924851. Dan mengacu pada sebuah buku misalnya bernama : Java Network Programming. Masing-masing sintaks tergantung pada resource_name.ISBN

namespace terdiri dari 10 atau 13 karakter, semuanya adalah digit— dengan sebuah aturan bahawa karakter terakhir berupa huruf : X (baik huruf besar / kecil).

(106)

URI

• URL (Uniform Resource Locator) :

penunjuk ke suatu resource di Internet

pada lokasi tertentu, misal:

http://www.oreilly.com/catalog/javanp3/

• URL ada dua macam :

– Absolute URL : contoh <img

src=”http://www.ukdw.ac.id/ukdw.jpg”>

– Relative URL : contoh <img

(107)

MIME

Multipurpose Internet Mail Extensions, RFC

2045.

MIME adalah standar untuk mengirim

multipart, multimedia data melalui email di

Internet. Data bisa berupa data biner, ASCII

atau bukan ASCII. MIME digunakan untuk

mendeskripsikan isi file sehingga software

client dapat mengetahui perbedaan antara

data.

Contoh : text/html, text/css, image/gif,

video/mpeg, application/zip.

(108)
(109)
(110)

Pemrograman Jaringan 4

anton@ukdw.ac.id

(111)

Java IO

• Java IO dibutuhkan ketika kita membaca dan menulis, baik ditampilkan pada layar maupun disimpan pada file • Dalam pemrograman jaringan, Java IO dibutuhkan

ketika kita hendak mengirimkan byte data maupun membaca data dari server

• Input/Output dalam Java dipaketkan dalam java.io. • Selain kelas-kelas, paket ini juga mengandung interface

yang menangani aliran (stream) data output dan input. • Streams are sequences of data (whose elements may

(112)

Applications of Streams

• Streams are natural models of many

real-world systems:

– Mouse/keyboard/monitor input

– Human input to a program

(113)

Class Stream

• Byte stream: kelas dan interface ini

digunakan untuk menangani data biner

• Character stream: kelompok kelas ini

digunakan untuk menangani proses baca

tulis karakter, termasuk Unicode.

– Kelas ini merupakan pengembangan dari

kelas Byte Stream sehingga lebih efisien.

(114)

Byte Stream:

OutputStream

public abstract class OutputStream

Methodnya:

• public abstract void write(int b) throws

IOException

• public void write(byte[] data) throws IOException

• public void write(byte[] data, int offset, int length)

throws IOException

• public void flush( ) throws IOException

• public void close( ) throws IOException

(115)

Byte Stream:

InputStream

public abstract class InputStream

Sedangkan method-methodnya adalah:

• public abstract int read( ) throws IOException

• public int read(byte[] input) throws IOException

• public int read(byte[] input, int offset, int length)

throws IOException

• public long skip(long n) throws IOException

• public int available( ) throws IOException

• public void close( ) throws IOException

(116)

Hati-hati

OutputStream dan InputStream adalah kelas abstract, sehingga tidak bisa langsung diinstansiasi, harus diturunkan!

• Streams can also be buffered, but…

The flush() method breaks the deadlock by forcing the buffered stream to send its data even if the buffer isn't yet full.

(117)
(118)

Wrapper Classes

Class W is said to wrap class Y if:

1. Y is a concrete (not abstract) class

2. W’s constructor takes Y as an argument and

stores a local copy of Y

3. W reimplements all of Y’s methods

A wrapper can wrap a class and be the

subclass of another class at the same

(119)

File Input

• Java classes that support file input are found in

the

java.io

package

• FileReader

allows us to open a file for

reading

• BufferedReader

is a wrapper class that

provides methods that

– allow us to treat the file as a stream of characters – increases the efficiency of reading

(120)

BufferedReader

• A type of

Reader

that does internal

buffering.

– more efficient.

• Provides everything from

Reader

, plus:

String readLine()

(121)

Attaching a

BufferedReader

to stdin

InputStreamReader isr =

new InputStreamReader(System.in);

BufferedReader bf =

new BufferedReader(isr);

(122)

Stream Standard

• Kelas java.lang.System berkaitan standar input, output dan error.

• System.in merupakan objek dari InputStream

• System.out dan System.err merupakan objek dari PrintStream.

• Dalam java cara membaca inputan dari keyboard adalah menggunakan System.in. Agar mempermudah proses maka obyek System.in dibungkus dengan obyek

BufferedReader

• BufferedReader br = new BufferedReader(new

(123)

Strings

• Java provides a number of methods for

operating on

String

objects

• String

objects are immutable

• Immutable objects cannot be changed

once they are created

String s = "ABC"; s.toLowerCase();

(124)

StringBuffer

• Java provides a mutable staring class called

StringBuffer that allows strings to grow dynamically during program execution

• Several StringBuffer methods are the same as those found in String

• The StringBuffer class also contains a ToString method to allow easier output

• Some Method:

– capacity()

– setCharAt(int index, char ch) – insert(int offset, char c)

– delete(int start, int end)

– replace(int start, int end, String str) – reverse()

(125)

String vs StringBuffer

String str = new String ("Stanford ");

(126)
(127)
(128)

Sequential Files

• Files are stored on disks

• In this section we will assume that files consist of

multiple lines composed of characters

• Each line ends with an end of line character

• The file itself may have an end of file character

• Programmers often need to read or write files

(129)

Class File

• A File object can refer to either a file or a directory

File file1 = new File("data.txt"); File file1 = new File("C:\java");

• To obtain the path to the current working directory use:

System.getProperty("user.dir");

• To obtain the file or path separator use

System.getProperty("file.separator"); System.getProperty("path.separator");

or

File.separator() ;

(130)

Useful File methods

- public boolean canRead() - public boolean canWrite()

- public boolean createNewFile() - public boolean delete()

- public boolean exists() - public boolean isFile()

- public boolean isDirectory() - public long lastModified() - public long length()

- public boolean mkdir() - public boolean mkdirs()

(131)
(132)
(133)
(134)
(135)
(136)
(137)
(138)

Encoding

To change the system default encoding use

– System.setProperty("file.encoding", "encoding");

• To specify the encoding when creating the

output steam, use an OutputStreamWriter

OutputStreamWriter out = new

OutputStreamWriter( new

(139)
(140)

Alternative Reading File

BufferedReader in = new

BufferedReader(new FileReader(file));

String lineIn;

while ((lineIn = in.readLine()) != null) {

System.out.println(lineIn);

(141)
(142)
(143)
(144)

import java.io.*;

import java.util.StringTokenizer; public class WordCount {

public static void main( String[] args ) throws IOException { String delimiters = " .?!()[]{}|?/&\\,;:-\'\"\t\n\r";

BufferedReader inputFile = new BufferedReader( new FileReader( args[0] ) ); String buffer = null;

int chars = 0; int words = 0; int lines = 0; while( true ) {

buffer = inputFile.readLine(); if ( buffer == null ) break; lines++;

buffer = buffer.toLowerCase();

StringTokenizer tokens = new StringTokenizer( buffer, delimiters ); while( tokens.hasMoreElements() ) {

String word = tokens.nextToken(); words++;

chars += word.length(); } // end while

} // end while( true )...

System.out.println( "" + lines + " " + words + " " + chars ); } // end main

(145)
(146)

Tugas

• Buatlah “DOS PROMPT” simulation

• Berisi beberapa fungsi manipulasi file yang sudah diajarkan:

– Dir <dir>

– Copy <source> <dest> – Rename <source> <dest> – Move <source> <dest> – Properties <filename> – Date-Time – Make <filename> – Write <filename> – Del <filename> – Read <filename> – Mkdir <dirname>

(147)
(148)

Pemrograman Jaringan 5

(149)

HTTP

• Hypertext Transport Protocol (RFC 1945) • Language of the Web

– Protocol yang digunakan untuk komunikasi antara web browsers dan web servers

– Since 1990

• TCP port 80

• Penyempurnaan HTTP 1.0 menjadi versi 1.1 dispesifikasikan oleh IETF dengan RFC 2616

• HTTP merupakan implementasi dari protokol TCP • Bersifat “Stateless”

(150)

HTTP (2)

• HTTP bersifat request – response:

– HTTP client (user agent misalnya) mengirimkan permintaan (request) ke HTTP server dan server meresponse sesuai request tersebut

• User agent: Mozilla, Netscape, Microsoft Internet Explorer atau browser berbasis teks, Lynx atau links

• Perbedaan mendasar antara HTTP/1.1 dengan HTTP/1.0 adalah penggunaan hubungan persistent.

• HTTP/1.0 membuka satu koneksi untuk tiap permintaan URI – header = Connection: close

• HTTP/1.1 dapat menggunakan sebuah koneksi TCP untuk beberapa permintaan URI (persistent)

– header = Connection: Keep-Alive

– kecuali jika client menyatakan tidak hendak menggunakan hubungan persistent (header = Connection: close).

(151)

HTTP - methods

• Methods

– GET

• retrieve a URL from the server

– simple page request, limited – run a CGI program

– run a CGI with arguments attached to the URL

– POST

• preferred method for forms processing • run a CGI program

• parameterized data in sysin • more secure and private

(152)

HTTP - methods

• Methods (cont.)

– HEAD

• requests URLs status header only

• used for conditional URL handling for performance enhancement schemes

– retrieve URL only if not in local cache or date is more recent than cached copy

(153)
(154)
(155)

Method: Head

(156)
(157)

Method: GET

(158)

GET

(159)
(160)
(161)
(162)

HTTP Status Codes

• 200 OK

• 201 created

• 202 accepted

• 204 no content

• 301 moved perm.

• 302 moved temp

• 304 not modified

• 400 bad request

• 401 unauthorized

• 403 forbidden

• 404 not found

• 500 int. server error

• 501 not impl.

• 502 bad gateway

• 503 svc not avail

(163)

HTTP - URLs

• URL

– Uniform Resource Locator

• protocol (http, ftp, news)

• host name (name.domain name) • port (usually 80)

• directory path to the resource • resource name

– http://www.myplace.com/www/saya%20makan.html – http://www.myplace.com:80/cgi-bin/t.exe?a=1&b=2

(164)

Java URL class

• java.net.URL

• public final class URL extends Object

implements Serializable

• Konstruktor

– URL(String spec)

• URL(“http://localhost:8081/coba.asp?a=1&b=2”);

– URL(String protocol, String host, int port, String file)

• URL(“http”,”localhost”,8081,”coba.php”);

– URL(String protocol,String host,String file)

(165)

URL class method

Object getContent(), mengambil konten dari sebuah object

(166)

Exception

• All these constructors throw a

MalformedURLException if you try to

create a URL for an unsupported protocol

• May throw a MalformedURLException if

(167)
(168)
(169)

Contoh-contoh

• Lihat contoh ProtocolTester.java

• Lihat contoh URLSplitter.java

• Lihat contoh SourceViewer.java

• Lihat contoh ContentGetter.java

• Lihat contoh URISplitter.java

(170)

Class URLEncoder

(171)
(172)
(173)

Hasil

Dari contoh, terlihat bahwa untuk dapat memperlakukan data output dari

URLopenStream() sebagai deretan karakter, maka kita harus membuat obyek dari BufferedReader sehingga kita dapat mengambil data baris demi baris.

(174)

URLConnection

• Kelas ini merupakan kelas yang dapat melakukan

koneksi secara langsung ke alamat URL yang diinginkan • Kelas URLConnection adalah kelas abstrak, jadi kita

harus membuat kelas turunan dari kelas

URLConnection, kemudian memanggil method openConnection()

(175)
(176)

Request GET

• Contoh request GET

– URLConnGET

Buka koneksi dengan menggunakan

openConnection() dan pada saat akan menerima Stream dari server gunakan getInputStream().

(177)

Request POST

• Buat URL yang diinginkan

• Buka koneksi URL yang diinginkan tersebut • setDoOutput() true

• Ambil OutputStream dari koneksi, agar dapat mengirimkan data ke server

• Tulis data ke OutputStream • Tutup OutputStream

(178)

HTTPURLConnection

HttpURLConnection yang merupakan kelas

turunan dari kelas URLConnection

Method GET

– Buat URLConnection

– Buat koneksi dari URLConnection yang ada dan dicasting menjadi HttpURLConnection, panggil method openConnection()

– setRequestMethod() menjadi GET

– Periksa getResponseCode(), jika error maka Exit – Jika tidak maka baca baris demi baris keluaran dari

(179)

HTTPURLConnection

Method POST

– Buat URLConnection

– Buka koneksi dari URLConnection yang dibuat dengan HttpURLConnection

– setRequestMethod() POST

– setDoOutput() TRUE karena kita akan menulis ke Server 5. Buat DataOuputStream() dari

getOutputStream()

– Tulis ke Server dengan menggunakan method writeBytes()

– Tutup DataOutputStream

– Baca output dari Server baris demi baris melalui getInputStream()

(180)

Pemrograman Jaringan 6

(181)

Socket

• Socket adalah

sebuah abstraksi

perangkat lunak yang

digunakan sebagai

suatu "terminal" dari

suatu hubungan

antara dua mesin

atau proses yang

saling

berinterkoneksi.

a socket

(182)

Operasi Socket

• Socket dapat melakukan operasi:

– Koneksi ke mesin remote – Mengirim data

– Menerima data – Mentutup koneksi – Bind to a port

– Listen pada data yang masuk

– Menerima koneksi dari mesin remote pada port tertentu

• Di tiap mesin yang saling berinterkoneksi, harus

terpasang socket.

(183)

Socket API in Java

• Pada J2SE telah disediakan paket

java.net yang berisi kelas- kelas dan

interface yang menyediakan API

(Application Programming Interface):

– level rendah (Socket, ServerSocket,

DatagramSocket)

– level tinggi (URL, URLConnection).

(184)

InetAddress class

• Kelas ini digunakan untuk mengambil informasi

IP suatu komputer. Kelas ini bersifat static dan

tidak memiliki konstruktor.

Method-methodnya adalah:

– getByName(namahost) yang akan menerima sebuah string nama host dan mengembalikan alamat IP

berdasarkan DNS, berupa object InetAddress.

• Untuk menampilkannya: gunakan method toString()

– getLocalHost() yang akan mengembalikan alamat IP dan nama host pada komputer lokal.

– getAllByName(namahost) mengembalikan array InetAddress

(185)
(186)
(187)
(188)

NSLookup Clone

• Menggunakan InetAddress

• Lihat HostLookup.java

(189)

Informasi Antar muka Jaringan

• Untuk mendapatkan informasi network

interface pada Java telah terdapat kelas

NetworkInterface yang mampu

mendapatkan informasi tentang antar

muka jaringan, nama device, dan IP yang

ter-bind. Nama device misalnya eth0, lo0

• Contoh: DisplayNet.java

(190)

Connection-oriented & Connectionless

Socket

• A socket programming construct can make

use of either the UDP (User Datagram

Protocol) or TCP (Transmission Control

Protocol).

• Sockets that use UDP for transport are

known as datagram sockets, while

sockets that use TCP are termed stream

(191)

IP Protocol Suite

Application Transport Network (Internet) Data-link (Host-to-Network) Sockets API TCP UDP My Program IP

(192)

Socket to Socket

Communication

Client Program socket Ports TCP/UDP IP Server Program socket Ports TCP/UDP IP

(193)

Review: TCP vs. UDP

• TCP

– Connection-oriented – Reliable – Stateful

• UDP

– Connectionless – Unreliable – Stateless

(194)

Review: Ports

• Used to differentiate applications running

on same host (address)

• Represented as 16-bit integer

– Well-known ports: 0 – 1023

– Registered: 1024 – 49151

(195)

Java Socket & ServerSocket class

• Untuk Socket Connection Oriented Programming

– This means that the connection between server and client

remains open throughout the duration of the dialogue between the two and is only broken (under normal circumstances) when one end of the dialogue formally terminates the exchanges (via an agreed protocol)

• Kelas java.net.ServerSocket digunakan oleh Server untuk listen koneksi

• Kelas java.net.Socket digunakan oleh Client untuk inisialisasi koneksi.

• Setelah client terkoneksi ke server dengan

menggunakan Socket, maka ServerSocket akan

mengembalikan status server ke client melalui koneksi yang terbentuk sebelumnya.

(196)

The Java.net.Socket Class

• Connection is accomplished through the constructors.

Each Socket object is associated with exactly one remote host. To connect to a different host, you must create a

new Socket object.

public Socket(String host, int port) throws UnknownHostException, IOException

public Socket(InetAddress address, int port) throws IOException public Socket(String host, int port, InetAddress localAddress, int

localPort)

throws IOException

public Socket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException

Sending and receiving data is accomplished with output and

input streams. There are methods to get an input stream for a socket and an output stream for the socket.

public InputStream getInputStream() throws IOException public OutputStream getOutputStream() throws IOException

There's a method to close a socket:

Referensi

Dokumen terkait

Selain penyakit jantung koroner dan stroke, komplikasi peningkatan tekanan darah termasuk gagal jantung, penyakit pembuluh darah perifer, gangguan ginjal, perdarahan

a) Citra tubuh yaitu : menolak menyentuh atau melihat bagian tubuh tertentu, menolak bercermin, tidak mau mendiskusikan keterbatasan atau cacat tubuh, menolak

KARUNIA JAYA / TUTUT ERNA WAHYUNI, S.Si.. KARUNIA JAYA / TUTUT ERNA

Untuk mendukung kegiatan program Aksi Perbibitan Kerbau melalui kegiatan uji coba inseminasi buatan kerbau yang dimulai pada tahun 2006 – 2009, bekerjasama dengan Dinas

Puji dan syukur kehadirat Allah Yang Maha Kuasa atas semua rahmat dan karunia yang telah Dia berikan sehingga penulis dapat menyelesaikan tugas akhir ini. Penyelesaian tugas akhir

Hal- hal yang perlu dijelaskan kepada petani meliputi (a) alasan produktivitas padi hibrida lebih tinggi dibanding padi inbrida, (b) stabilitas produktivitas padi hibrida pada

Salah satu jenis jagung fungsional yang diteliti dan dikembangkan di Balai Penelitian Tanaman Serealia (Balitsereal) adalah jagung kaya betakaroten dengan kandungan vitamin A

Antibiotik yang paling sensitif adalah meropenem (80%). Terdapat hubungan antara derajat eksaserbasi dan obstruksi dengan hasil kultur sputum bakteri. Tidak ada perbedaan berarti