• Tidak ada hasil yang ditemukan

Sistem Terdistribusi 4

N/A
N/A
Protected

Academic year: 2021

Membagikan "Sistem Terdistribusi 4"

Copied!
50
0
0

Teks penuh

(1)

Sistem Terdistribusi 4

Pemrograman Socket

Pemrograman Socket

(2)

Socket

Socket

• Socket adalah sebuah

abstraksi perangkat lunak yang digunakan sebagai

Process A

Process B

yang digunakan sebagai suatu "terminal" dari

suatu hubungan antara g dua mesin atau proses yang saling b i k k i berinterkoneksi. • End to end i ti communication

a socket

(3)

Addresses Ports and Sockets

Addresses, Ports and Sockets

Lik

t

t

d

ilb

• Like apartments and mailboxes

– Apartement is the application

Y t t b ildi dd i th dd

– Your apartment building address is the address – Your mailbox is the port

The post office system is the network – The post-office system is the network

– The socket is the key that gives you access to the

right mailbox right mailbox

• Q: How do you choose which port a socket

Q: How do you choose which port a socket

connects to?

(4)

Socket types

Socket types

St

k t

• Stream socket

– Paket-paket data byte, bidirectional connection – Ordered reliable delivering of packets

– Ordered, reliable delivering of packets – Use TCP

• Datagram socket

Datagram socket

– There is no connection.

• Each packet is sent independently from the others

U d d li bl d li i f k t

– Unordered, unreliable delivering of packets – Use UDP

• Raw sockets

• Raw sockets

(5)

Stream vs Datagram

Stream vs Datagram

App socket 3 2 1 Dest.

Datagram

App D1

Stream

socket 3 2 1 D2 D3

(6)

Operasi Socket

Operasi Socket

S

k t d

t

l k k

i

• Socket dapat melakukan operasi:

– Koneksi ke mesin remote (connect)

M i i d t ( d)

– Mengirim data (send) – Menerima data (receive)

Mentutup koneksi (close) – Mentutup koneksi (close)

– Bind to a port (bind), khusus server

• Di tiap mesin yang saling berinterkoneksi harus

• Di tiap mesin yang saling berinterkoneksi, harus

terpasang socket.

– Dalam arti saling tahu sama tahu – Dalam arti saling tahu sama tahu – Sesuai kesepakatan

(7)

Stream Socket lifetime

Stream Socket lifetime

• Creation

• Binding

– Assigning a name to the socket – until a name isAssigning a name to the socket until a name is

assigned, no messages may be received. – Communicating processes are bound by an

i ti hi h i I t t i d f l l

association, which in Internet is composed of local

and foreign addresses, and local and foreign ports.

ports.

– The bind() system call specifies half of an association {local address, local port},

– while the connect and accept primitives complete the association {foreign address, foreign port}.

(8)

Stream Socket lifetime (cont )

Stream Socket lifetime (cont.)

C i

• Connection

– Connection establishment, between a server and a client

– The server binds a socket to a well known address and passively p y

listens, which means that he waits for a client to connect

– When a client connects, the server accepts the connection.

• Data transfer • Data transfer

– When the two process are connected, data flow may begin between them (in byte data)

• Discard

– When the communication ends, the sockets must be closed, to enable

the system to release resources, especially the bounded names (e.g. y p y ( g local ports) because they cannot be reused until they are available from any possible association.

(9)

Data transfer

Data transfer

• Heterogenity

• Big Endian vs Little Endian

Big Endian vs Little Endian

• Solution:

– Marshalling

– Unmarshalling

g

Big Endian Big-Endian machine Little-Endian machine 128.119.40.12 12.40.119.128 128 119 40 12 128 119 40 12

(10)

Marshalling / Unmarshalling

Marshalling / Unmarshalling

• Object Serialization

Big-Endian Littl E di 128.119.40.12 128.119.40.12 g machine Little-Endian machine un m sh a g 128 119 40 12 12 40 119 128 128 119 40 12 128 119 40 12 m ar a llin

(11)

Serializable

Serializable

• Pada pemrograman socket biasanya yang dikirim adalah

d t t

data stream.

– Nah, bagaimana jika yang dikirim adalah suatu obyek?

• Hal ini dapat dilakukan dengan menggunakan serialisasiHal ini dapat dilakukan dengan menggunakan serialisasi obyek.

• Object Serialization adalah teknik dimana suatu program dapat menyimpan status obyek ke dalam sebuah file

dapat menyimpan status obyek ke dalam sebuah file dan kemudian dapat dipanggil kembali dari file ke memori atau dikirim melalui jaringan.

S i li i tik b k b k d t i k – Serialisasi memastikan agar obyek-obyek dapat sinkron

• Jika sebuah obyek ingin diserialisasi, maka obyek itu harus mengimplementasikan java.io.Serializable. g p j

• Untuk menuliskan obyek yang terserialisasi ke file dibutuhkan I/O stream khusus, yaitu menggunakan

ObjectOutputStream yang merupakan subclass dari ObjectOutputStream yang merupakan subclass dari FilterOutputStream.

(12)

Contoh Pegawai

Contoh Pegawai

(13)

Contoh SimpanPegawai

Contoh SimpanPegawai

(14)

Penjelasan

Penjelasan

B

ti

Si

P

i k

• Berarti program SimpanPegawai akan

menyimpan 2 obyek pegawai yaitu “aaa” dan

“bbb” ke dalam file bernama “db”

bbb ke dalam file bernama db .

• Sedangkan untuk pembacaan file yang berisi

obyek juga harus dilakukan secara berurutan

obyek juga harus dilakukan secara berurutan,

yaitu “aaa” dulu baru “bbb”.

• Karena pembacaan dengan menggunakan

• Karena pembacaan dengan menggunakan

readObject() yang mengembalikan Object,

maka harus dilakukan casting sesuai dengan

maka harus dilakukan casting sesuai dengan

tipe Objectnya.

(15)

Contoh: BacaPegawai

Contoh: BacaPegawai

(16)

Serialisasi dgn Vector

Serialisasi dgn Vector

(17)

Transient

Transient

D l

t h

t h di t

t ib t d i

• Dalam contoh-contoh diatas, semua atribut dari

kelas Pegawai secara otomatis bisa dibaca

karena bersifat serializable

karena bersifat serializable.

• Kita bisa membatasi hak akses terhadap atribut

tertentu saja yang bersifat serializable

tertentu saja yang bersifat serializable.

• Hal ini dapat dilakukan dengan menggunakan

keyword transient

keyword transient.

• Dengan keyword itu maka atribut tersebut tidak

ikut “terbawa” untuk dikirimkan dalam deretan

ikut terbawa untuk dikirimkan dalam deretan

byte melalui I/O Stream.

(18)

Pegawai yang Transient

Pegawai yang Transient

(19)

Stream sockets:

Java Example

• package java.net

• Classes:

Classes:

– InetAddress

S

k t

– Socket

– ServerSocket

– DatagramSocket

(20)

InetAddress class

InetAddress class

• Kelas ini digunakan untuk mengambil informasi

g

g

IP suatu komputer.

– Kelas ini bersifat static dan tidak memiliki konstruktor

konstruktor.

• Method-methodnya adalah:

getByName(namahost) yang akan menerima

– getByName(namahost) yang akan menerima

sebuah string nama host dan mengembalikan alamat IP berdasarkan DNS, berupa object InetAddress.

U t k ilk k th d t St i () • Untuk menampilkannya: gunakan method toString()

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

– getAllByName(namahost) mengembalikan array InetAddress

• Kemungkinan error: UnknownHostException

• Kemungkinan error: UnknownHostException

(21)

Contoh getByName

Contoh getByName

(22)

Class ServerSocket

Class ServerSocket

C

t

t

• Constructor

– ServerSocket(int port)

S

S k t(i t

t i t b kl )

– ServerSocket(int port, int backlog)

– ServerSocket(int port, int backlog,

InetAddress bindAddr)

InetAddress bindAddr)

• Methods

Socket accept()

– Socket accept()

– void close()

InetAddress getInetAddress()

– InetAddress getInetAddress()

– int getLocalPort()

(23)

Class Socket

Class Socket

• Constructor

– Socket (InetAddress address, int port) – Socket (String host, int port)

• Methods

– InputStream getInputStream()

– OutputStream getOutputStream()p g p () – void close()

– InetAddress getInetAddress()InetAddress getInetAddress() – int getLocalPort()

(24)

Prinsip ServerSocket

Prinsip ServerSocket

C t S S k t bj t • Create a ServerSocket object.

– ServerSocket servSock = new ServerSocket(1234);

• Put the server into a waiting state • Put the server into a waiting state.

– Socket link = servSock.accept();

• Set up input and output streams.p p p

– Scanner input = new Scanner(link.getInputStream());

– PrintWriter output = new PrintWriter(link.getOutputStream(),true);

S d d i d t • Send and receive data.

output.println("Awaiting data..."); String input = input.nextLine(); g p p ();

• Close the connection (after completion of the dialogue).

(25)

Prinsip Socket (client)

Prinsip Socket (client)

Establish a connection to the server • Establish a connection to the server.

– the server's IP address (of type InetAddress); – the appropriate port number for the service.

Socket link = new Socket(InetAddress.getLocalHost(),1234);

• Set up input and output streams.

– Scanner input = new Scanner(link getInputStream());Scanner input new Scanner(link.getInputStream());

– PrintWriter output = new PrintWriter(link.getOutputStream(),true);

• Send and receive data.

Th S bj t t th li t ill i t b – The Scanner object at the client will receive messages sent by

the PrintWriter object at the server,

– while the PrintWriter object at the client will send messages that are received by the Scanner object at the server (using methods are received by the Scanner object at the server (using methods nextLine and println respectively).

(26)

Contoh InfoClient dan InfoServer

Contoh InfoClient dan InfoServer

• InfoClient.java

• InfoServer java

InfoServer.java

(27)
(28)
(29)
(30)
(31)
(32)

Kita Lanjutkan dengan Socket UDP!

Bagaimana jika client yang dilayani lebih dari satu? Bagaimana jika client yang dilayani lebih dari satu? - MULTI THREADING

(33)

Kelas java net DatagramSocket

Kelas java.net.DatagramSocket

Kelas ini mengirim dan menerima DatagramPacket dari • Kelas ini mengirim dan menerima DatagramPacket dari

atau ke jaringan. Constructor:

• DatagramSocket(int port)

K l i i d t di k t k t k t

– Kelas ini dapat digunakan untuk menyatakan penggunaan suatu nomor port sebagai "pintu" untuk menerima koneksi dari client.

• DatagramSocket(int port, InetAddress addr)

– Kelas ini membentuk koneksi dengan protokol UDP pada alamat IP lokal tertentu dan pada nomor port tertentu.

• DatagramSocket() g ()

– Kelas ini membentuk koneksi dengan protokol UDP pada alamat IP lokal host dengan penentuan nomor portnya secara random berdasar tersedianya nomor port yang dapat digunakan.

(34)

Methods DatagramSocket

Methods DatagramSocket

• send(DatagramPacket data), akan

mengirim DatagramPacket ke host dan

g

g

port yang dituju

• receive(DatagramPacket data) akan

• receive(DatagramPacket data), akan

memblok eksekusi sampai suatu paket

lengkap diterima

(35)

Kelas java net DatagramPacket

Kelas java.net.DatagramPacket

Merupakan kelas yang menyatakan atau mewakili • Merupakan kelas yang menyatakan atau mewakili

sebuah paket informasi, yaitu sebuah array byte yang dipertukarkan pada jaringan.

Constructor:

• DatagramPacket(byte[] buf int length) • DatagramPacket(byte[] buf, int length)

– Kelas ini dapat digunakan untuk mengambil informasi.

Constructor ini membutuhkan sebuah array byte yang menjadi parameter pertama yang berfungsi untuk menyimpan data dan parameter pertama, yang berfungsi untuk menyimpan data dan informasi ukuran data yang diterima.

• DatagramPacket(byte[] buf, int length, InetAddress address int port)

address, int port)

– Constructor ini digunakan untuk membuat paket Datagram yang akan mengirim data. Constructor ini memerlukan informasi array byte yang akan dikirim dan panjangnya serta alamat dan port byte yang akan dikirim dan panjangnya, serta alamat dan port yang dituju.

(36)

Methods DatagramPacket

Methods DatagramPacket

tD t ()

t k

bil i f

i

• getData(), untuk mengambil informasi

data, kembaliannya berupa byte[] akan

mempersulit kita membaca data, sehingga

kita bisa mengubahnya menjadi String

atau ByteArrayInputStream

• getLength(), untuk mengambil panjang

get e gt (), u tu

e ga b pa ja g

datagram

• getAddress() untuk mengambil alamat IP

• getAddress(), untuk mengambil alamat IP

• getPort(), untuk mengambil alamat port

(37)

Exception

Exception

• public class SocketException extends

IOException

p

– Kelas ini merupakan kelas yang diturunkan

dari kelas IOException Kelas exception ini

dari kelas IOException. Kelas exception ini

dipanggil atau dipicu ketika ada kegagalan

dalam pemakaian socket

dalam pemakaian socket

– contoh: kegagalan dalam protokol TCP.

ketika port yang akan digunakan sudah digunakan • ketika port yang akan digunakan sudah digunakan

(38)

Exception (2)

Exception (2)

bli

l

Bi dE

ti

t

d

• public class BindException extends

SocketException

K l i i k di il k tik d t l k l

– Kelas ini akan dipanggil ketika ada port lokal yang akan digunakan sudah terpakai oleh yang lain, atau ada kegagalan dalam permintaan untuk g g p

menggunakan alamat.

• public class ConnectException extends

SocketException

– Kelas ini akan dipanggil ketika sebuah koneksi ditolak

l h h t dit j l h k tid k d

oleh host yang dituju, oleh karena tidak ada proses yang siap menerima data pada port yang dituju.

(39)

Exception (3)

Exception (3)

bli

l

N R

t T H

tE

ti

• public class NoRouteToHostException

extends SocketException

– Koneksi yang akan dibangun tidak dapat

dipenuhi oleh karena melebihi waktu timeout

di

h

di j

id k

yang tersedia atau host yang dituju tidak

dapat dicapai (unreachable).

• public class ProtocolException extends

IOException

– Terjadi ketika data diterima dari network

menyalahi aturan TCP/IP

(40)

Datagram Sockets

Datagram Sockets

SERVER:

1. Create a DatagramSocket object

DatagramSocket dgramSocket =

new DatagramSocket(1234); new DatagramSocket(1234);

2. Create a buffer for incoming datagrams

byte[] buffer = new byte[256];

3. Create a DatagramPacket object for the incoming datagram:

t t t 2 t th i l t d b t th

• constructor get 2 arguments: the previously-created byte array; the size of this array.

DatagramPacket inPacket = new DatagramPacket inPacket new

DatagramPacket(buffer, buffer.length);

4. Accept an incoming datagram

(41)

Datagram Sockets

Datagram Sockets

SERVER:

5 Accept the sender’s address and port from the packet 5. Accept the sender s address and port from the packet

InetAddress clientAddress = inPacket.getAddress(); int clientPort = inPacket.getPort();

6 Retrieve the data from the buffer: 3 arguments: byte array start byte 6. Retrieve the data from the buffer: 3 arguments: byte array, start byte

array position, and length of byte array

string message = new String(inPacket.getData(), 0, inPacket.getLength());

7. Create the response datagram. 3 arguments:

the byte array containing the response message; the size of the response; the client's address; the client's port numberp ; ; p

.

DatagramPacket outPacket = new

DatagramPacket(response.getBytes(),

response.length(),clientAddress, clientPort);

5. Send the response datagram

dgramSocket.send(outPacket)

(42)

InfoServerUDP

InfoServerUDP

(43)
(44)

Datagram Sockets

g

CLIENT:

1

Create a DatagramSocket object

1. Create a DatagramSocket object

DatagramSocket dgramSocket = new

DatagramSocket();

DatagramSocket();

2. Create the outgoing datagram

DatagramPacket outPacket = new

DatagramPacket outPacket new

DatagramPacket(message.getBytes(),

message.length(),host, port);

g

g

(),

, p

);

3. Send the datagram message

dgramSocket.send(outPacket)

g

(

)

4. Create a buffer for incoming datagrams

(45)

Datagram Sockets

Datagram Sockets

CLIENT:

5

Create a DatagramPacket object for the incoming

5. Create a DatagramPacket object for the incoming

datagram

DatagramPacket inPacket =

g

new DatagramPacket(buffer,

buffer.length);

6

A

t

i

i

d t

6. Accept an incoming datagram

dgramSocket.receive(inPacket)

7

Retrieve the data from the buffer

7. Retrieve the data from the buffer

string response = new

String(inPacket.getData(), 0,

g(

g

(),

,

inPacket.getLength());

8. Close the DatagramSocket:

(46)

InfoClientUDP

InfoClientUDP

(47)
(48)
(49)

Prinsip-prinsip yang dilakukan oleh

InfoClientUDP

B

t D t

S

k t

• Buat DatagramSocket

• Lakukan loop sampai user mengetikkan QUIT.

– Baca masukkan dari user

– Tampung pada buffer array byte

B t b k D t P k t t k diki i k k

– Buat obyek DatagramPacket untuk dikirimkan ke server

– Kirimkan DatagramPacket ke server – Kirimkan DatagramPacket ke server

– Siapkan packet datagram untuk mengambil informasi dari client

– Baca DatagramPacket yang dikirim dari client

(50)

NEXT

NEXT

• Distributed Object & Remote Invocation

– Chapter 5

p

Referensi

Dokumen terkait

Puji syukur kehadirat Allah Subhanahu wa ta’ala atas rahmat dan karunia - Nya, serta atas izin dan ridho-Nya penulis dapat menyelesaikan skripsi dengan judul Nilai

Walaupun nilai N lebih rendah dari nilai N kotoran kambing segar namun lama fermentasi meningkatkan kadar P dan K, sehingga pupuk kandang dengan lama fermentasi 4, 6, 8,

Sehingga tempat ini sangat cocok untuk berwirausaha. Penikmat kuliner es didaerah kaliwungu tidak perlurisau karena es bakso kuah pedas ini dijamin

akhir dari prosedur greedy Knapsack. Sehingga susunan adalah Susun data sesuai kriteria, secara tidak.. Seperti yang ditunjukkan pada gambar 5. Penyelesaian dengan

Dengan demikian dapat dinyatakan bahwa pengaruh penggunaan media audiovisual dalam pembelajaran terhadap peningkatan hasil belajar mata pelajaran Pendidikan Agama

Memenuhi  Sebagaimana dijelaskan pada indikator 2.1.1.a Rencana Kerja Usaha Pemanfaatan Hasil Hutan Kayu dalam Hutan Alam (RKUPHHK-HA) pada Hutan Produksi yang

Puslitbang tekMIRA telah melakukan uji coba gasifikasi batubara untuk pembangkit listrik tenaga diesel dual fuel, di Sentra Teknologi Pemanfaatan Batubara Palimanan, dengan

ini maka maka tidak tidak ada ada nama nama host yang host yang sama sama pada pada domain/. domain/ subdomain subdomain yang yang sama sama , , karena karena masing masing -