• Tidak ada hasil yang ditemukan

Network Programming. Oleh: Idris Winarno (thanks to my sist)

N/A
N/A
Protected

Academic year: 2021

Membagikan "Network Programming. Oleh: Idris Winarno (thanks to my sist)"

Copied!
49
0
0

Teks penuh

(1)

Network Programming

Oleh:

Idris Winarno

(thanks to my sist)

(2)

Menu

z Pengantar Jaringan Komputer TCP/IP z Pemrograman Client/Server

z Dasar networking di Java

z Socket: class Socket dan ServerSocket

z Mengimplementasikan network client. z Mengimplementasikan a network server.

z Datagram: class DatagramPacket dan DatagramSocket

z URL and URLConnection class

z Loading a Web page and any other resource with a URL

(3)

Protokol

z Suatu aturan atau mekanisme dimana dua

komputer atau lebih dapat saling berinterkoneksi. z Protokol mendefinisikan suatu format paket data

yang akan dipertukarkan untuk menunjang mekanisme tersebut.

z Protokol yang banyak digunakan adalah TCP/IP. z Internet menggunakan TCP/IP.

(4)

Protokol TCP/IP

z Memiliki alamat unik yg diatur dengan protokol IP dengan panjang 32 bit.

z Memiliki port yang digunakan sebagai mekanisme untuk mengidentifikasi sebuah proses.

z Alamat port 0 - 65535

z Port 0 - 1023 Æ well known port

Misal port 80 untuk HTTP

z Port 1024 – 49151 Æ registered port

z Port 49152 – 65535 Æ Dynamic port / Private Port

(5)

Tipe pemrograman jaringan

z

Connection Oriented

z

Connectionless

(6)

Connection Oriented

z

Memberi kepastian bahwa paket yang

dikirimkan dapat diterima oleh proses aplikasi

yang dituju dalam suatu urutan waktu

dikirimkan.

z

Analog dengan hubungan jaringan telepon

z

Pada TCP/IP, protokol connection oriented

adalah protokol TCP.

z

Di Java diimplementasikan dengan class

(7)

Connectionless

z Mengirim paket secara individu.

z Koneksi antara pengirim dan penerima tidak harus terpelihara setelah paket diterima atau dikirim.

z Pada TCP/IP, protokol connection oriented adalah protokol UDP.

z Connectionless lebih cepat daripada Connection Oriented, namun connectionless tidak menjamin pengiriman.

z Di Java diimplementasikan dengan class

(8)

Pemrograman Client/Server

z

Melibatkan dua hal:

z Client z Server

z

Client adalah program yang terkoneksi

dengan sistem untuk meminta layanan.

z

Server adalah program yang berjalan pada

suatu komputer yang menunggu program lain

yang minta layanan pada port tertentu.

(9)

Networking in Java

z Networking adalah kemampuan antar komputer

untuk saling berkomunikasi dan bertukar informasi. z Menggunakan class-class yang ada di package

java.net.

z Package Java.net mendukung berbagai macam

operasi networking, termasuk koneksi dan retrieving file dengan HTTP dan FTP, seperti yang dilakukan oleh socket UNIX pada level terendah.

(10)

InetAddress

z Class yang berfungsi untuk mengambil informasi alamat IP suatu

komputer.

z Pada java.net.InetAddress

z Bersifat satic dan tidak memiliki konstruktor.

z Menyediakan fungsi yang dapat digunakan untuk mendapatkan alamat

IP.

z getByName(namaHost)

menerima sebuah string nama host dan mengembalikan alamat IP sesungguhnya.

z getLocalHost()

akan mengembalikan informasi alamat IP dan nama host pada komputer lokal.

z getHostName()

Gets the host name for this IP address z getHostAddress()

Returns the IP address string in textual presentation. z dll

(11)

Contoh : InetAddress

Output: 127.0.0.1 localhost

(12)

Connection Oriented: Socket

z

Class Socket dan ServerSocket adalah

abstraksi dari standar TCP socket

programming techniques.

z

Class socket menyediakan client-side

socket interface yang mirip dengan standard

UNIX sockets.

z

Socket dapat menangani dua macam stream:

z input stream z output stream

.

(13)

Socket

z Adalah class yang digunakan untuk membuat suatu hubungan ke mesin atau proses lain.

z Socket dibuat untuk membuat aplikasi client pada connection oriented.

z Setelah ada hubungan antar sistem, baru bisa

dilakukan pertukaran data melalui stream dengan membuat input stream dan output stream dari obyek socket.

(14)

Constructor Socket

z Socket(InetAddress address, int port)

Membuat sebuah stream socket dan koneksi ke suatu nomor port pada sebuah komputer yang memiliki alamat IP.

z Socket(String host, int port)

Membuat sebuah stream socket dan juga koneksi ke suatu nomor port tertentu pada sebuah komputer berdasarkan namanya.

z Socket(InetAddress address, int port, InetAddress localAddr, int

localPort) dan

z Socket(String host, int port, InetAddress localAaddr, int localPort)

Membuat sebuah socket yang mengkoneksikannya ke nomor port yang dituju pada alamat IP yang disebutkan pada parameter address atau nama host.

Selain itu juga dilakukan bind socket ke alamat lokal dan port lokal. (Hal ini dilakukan jika koneksi antara client dan server membutuhkan nomor port yang sudah ditentukan).

(15)

Method Socket

z getInputStream dan getOutputStream

Keduanya mengembalikan suatu obyek stream yang dapat digunakan untuk berkomunikasi dengan socket.

z getInetAddress()

untuk mendapatkan nama host yang dituju dan alamat IP nya.

z getPort()

untuk mendapatkan nomor remote host.

z getLocalPort()

untuk mendapatkan nomor port localhost.

z getLocalAddress()

untuk mendapatkan alamat local di tempat socket digunakan.

(16)

ServerSocket

z Menyatakan suatu koneksi TCP yang berfungsi

untuk listen yang siap menerima suatu permintaan dari proses lain.

z ServerSocket dipakai untuk membangun aplikasi server yang bersifat connection oriented.

z Setelah ada hubungan antar sistem, baru bisa

dilakukan pertukaran data melalui stream dengan membuat input stream dan output stream dari obyek socket yang dihasilkan ketika kelas ServerSocket

menerima permintaan dari client melalui method accept().

(17)

ServerSocket

z ServerSocket()

Creates an unbound server socket. z ServerSocket(int port)

Creates a server socket on a specified port. z ServerSocket(int port, int backlog)

Creates a server socket and binds it to the specified local port number, with the specified backlog.

z ServerSocket(int port, int backlog, InetAddress bindAddr) Create a server with the specified port, listen backlog,

(18)

Method ServerSocket

z

accept()

menghasilkan sebuah obyek kelas socket

yang terkoneksi dengan client.

z

close()

(19)

Implementing a Client

z Client adalah program yang meminta layanan. z Terdiri dari lima langkah:

1. Membuat obyek Socket.

2. Membuat output stream yang dapat digunakan untuk

mengirim informasi ke Socket.

3. Membuat input stream untuk membaca respon dari

server.

4. Melakukan I/O dengan input dan output streams. 5. Menutup koneksi Socket .

(20)

Implementing a Client

z

Most of the methods described throw an

IOException

and need to be wrapped in a

try/catch

block.

(21)

1. Membuat obyek Socket

z Socket adalah class Java yang digunakan untuk

membuat koneksi.

z Client terhubung dengan server yang menunggu

koneksi pada port yang disediakan.

z Cara membuat socket :

Socket client = new Socket (“hostname”,portNumber);

or

(22)

2. Membuat output stream yang dapat digunakan untuk mengirim informasi ke Socket

z Java programming language mampu menulis data ke file, socket, dan standard output.

z Java menyediakan berbagai macam class dan interface untuk melakukan stream.

z Berbagai macam OutputStream yang tersedia untuk file juga bisa digunakan untuk sockets.

z Salah satu output stream yang bisa digunakan adalah PrintWriter.

(23)

2. Membuat output stream yang dapat

digunakan untuk mengirim informasi ke

Socket

z Konstruktor PrintWriter membutuhkan dua argumen:

z a generic OutputStream, which you can obtain from the

Socket by means of getOutputStream.

z A Boolean, you should specify true to force autoflush.

z Example:

PrintWriter out =

new PrintWriter(client.getOutputStream(),true);

(24)

3. Membuat input stream untuk

membaca respon dari server.

z

Use standard input stream layered on top of

socket.

z

For handling character-based data, the

simplest is using InputStreamReader.

z

Example:

InputStreamReader in =

(25)

3. Membuat input stream untuk membaca respon dari server.

z In most cases, a better approach is to wrap the socket’s generic InputStream inside a

BufferedReader z Example: BufferedReader in = new BufferedReader( new InputStreamReader( client.getInputStream()));

z If the server is sending complex object, you will want to open an ObjectInputStream and use

(26)

4. Melakukan I/O dengan input dan

output streams

z

A PrintStream has print and println

methods.

z

PrintStream

inherits some simple write

methods from OutputStream.

z

write

method let you send binary data be

sending an individual byte or an array of

(27)

4. Melakukan I/O dengan input dan

output streams.

z

A PrintWriter has print and println

methods.

z

PrintWriter

can create print writers for

different Unicode character sets.

(28)

4. Melakukan I/O dengan input dan

output streams.

z

BufferedReader

has two particularly useful

methods:

z read

Returns a single char.

z readLine

Reads a whole line and return a String. ReadLine will wait until receiving a carriage return or an

(29)

5. Close the Socket when done

z

Close the socket with the close method:

client.close();

z

This method closes the associated input and

(30)

Implementing a Server

z The server is the program that starts first and waits for incoming

connections.

z Implementing a server consists of six basic steps:

1. Create a ServerSocket object

2. Create a Socket object from the ServerSocket 3. Create an input stream to read input from the client. 4. Create an output stream that can be used to send

information back to the client.

5. Do I/O with input and output streams. 6. Close the Socket when done.

Note: most of the methods described throw an IOException, so they need to be wrapped inside a try/catch block in an actual implementation.

(31)

1. Create a ServerSocket

object

z Requires only a port number, not a host: z Example :

ServerSocket listenSocket =

new ServerSocket(portNumber);

z If you try to listen on a socket that is already in use, an IOException will be thrown.

(32)

2. Create a Socket object from

the ServerSocket

z The ServerSocket accept method blocks until a connection is

established, the returns a normal Socket object.

z Example:

while(someCondition) {

Socket server = listenSocket.accept(); doSomethingWith(Server);

}

z To allow multiple simultaneous connections to the socket, pass this socket to a separate thread to create the input/output

(33)

3. Create an input stream to

read input from the client

z Most server will read data before transmitting a reply.

z Omit this step if the server only transmits information.

z Using BufferedReader and

InputStreamReader as follows:

BufferedReader in = new BufferedReader(

new InputStreamReader(server.getInputStream()));

z Use ObjectInputStream to receive complex objects from another Java program.

(34)

4. Create an output stream that can be used to send information back to the client.

z Use a generic OutputStream to send binary data. z To use print and println command, create a

PrintWriter. z Example:

PrintWriter out =

new PrintWriter(server.getOutputStream);

z Use an ObjectOutputStream if the client is written in the Java programming language and is expecting complex Java objects.

(35)

5.Do I/O with input and output

streams

z We can use class (the same way as client):

z BufferedReader

Provides read and readLine methods for reading characters or strings.

z DataInputStream

Has readByte and readFully methods for reading a single byte or a byte array.

z PrintWriter

Has print and println for sending high-level data through a PrintWriter.

(36)

6. Close the Socket when done

z

When finish, close the socket with the close

method:

server.close();

z

This method closes the associated input and

output streams but does not terminate any

loop that listens for additional incoming

(37)
(38)

Connectionless: Datagram

z

Terdapat 2 class yang tersedia untuk

mendukung koneksi ini:

z Java.net.DatagramPacket

Digunakan untuk mewakili paket informasi yang akan dipertukarkan.

z Java.net.DatagramSocket

Merupakan socket yang mengirim dan menerima DatagramPacket dari atau ke jaringan.

Bekerjasama dengan DatagramPacket untuk

(39)

Constructor DatagramPacket

z

DatagramPacket(byte[] buf, int length)

Digunakan untuk membuat paket data yang

disimpan dalam array of byte.

z

DatagramPacket(byte[] buf, int length,

InetAddress address, in port)

Digunakan untuk membuat paket data yang

disimpan dalam array of byte dan dikirim ke

port tertentu.

(40)

Method DatagramPacket

z getData()

Mendapatkan informasi data. z getLength()

Mendapatkan informasi panjang datagram. z getAddress()

Mendapatkan informasi alamat IP. z getPort()

Mendapatkan informasi nomor IP. z dll

(41)

Constructor DatagramSocket

z DatagramSocket(int port)

Menyatakan penggunaan suatu nomor port sebagai “pintu” untuk menerima koneksi dari client.

z DatagramSocket(int port, InetAddress Iaddr)

Membentuk koneksi dengan protokol UDP pada alamat IP lokal tertentu pada nomor port tertentu. z DatagramSocket()

Membentuk koneksi dengan protokol UDP pada

alamat IP lokal host dengan penentuan port random berdasarkan tersedianya nomor port yang dapat

(42)

Method DatagramSocket

z

send()

mengirimkan DatagramPacket yang

disebutkan pada parameter ke host dan port

yang dituju.

z

receive()

memblok eksekusi sampai suatu paket

lengkap diterima dari socket.

(43)

URL

z

URL = Uniform Resource Locator.

z

URL refers to the unique address of any

document or other resource that is accessible

on the Internet.

z

URL is part of the java.net package.

z

Create a new instance of the class URL that

represents the address of the resource you

want to load

(44)

Contoh URL

z

http://www.detik.com

z

ftp://ftp.sun.com

z

https://central.sun.net

z

ldap://localhost:389/o=MyLdap

URL tersusun dari:

(45)

URL Constructors

z Some URL object constructors:

z URL(String)

Creates a URL object from a full Web address such as

http://www.naviseek.com/java21 or ftp://ftp.netscape.com

z URL(String, String, int, String) Creates a new URL object from:

z a protocol (such as “http”, or “ftp”),

z hostname (such as “www.naviseek.com” or “ftp.netcom.com”), z port number (80 for HTTP),

z and a filename or path name.

z URL(String, String, String)

is the same as the previous constructor minus the port number. z Using URL(String) constructor, we must deal with

(46)

Method URL

z int getDefaultPort()

Mengambil informasi nomor port default dari protokol yang disertakan pada URL.

z String getFile()

Mengambil nama file dari URL.

z String getHost()

Mengambil nama komputer dari URL.

z String getPath()

Mengambil informasi path resource sebagai bagian dari URL.

z int getPort()

Mengambil informasi port yang merupakan bagian URL.

z String getProtocol()

Mengambil informasi nama protokol dari URL.

z String getQuery()

Mengambil query yang disertakan pada sebuah URL.

z String getRef()

Mengambil referensi atau anchor yang merupakan bagian dari URL.

z String toExternalForm()

Mengembalikan URL lengkap

(47)

URLConnection:

z Java program can reach a text document on the World Wide Web.

z URLConnection merupakan abstract class yang mampu load dan membuka koneksi suatu URL.

z Gunakan method openConnection untuk membuka koneksi dengan URL tertentu.

(48)

URLConnection:

Opening a Stream over the Net

To load a text document of the Web and read it line by line:

1. Create a URL object that represents the resource’s

World Wide Web address.

2. Create a URLConnection object that can load that

URL and make a connection to the site hosting it.

3. Use the getInputStream() method of that

URLConnection object, create an

InputStreamReader that can read a stream of data from the URL.

4. Using that input stream reader, create a

BufferReader object that can efficiently read characters from an input stream.

(49)

Example:

Opening a Stream over the Net

URLConnection conn = null; InputStreamReader in;

BufferedReader data; …

in = new InputStreamReader(conn.getInputStream()); data = new BufferedReader(in);

Referensi

Dokumen terkait