jeni slides j2 me-06-networking

33
Networking Versi 0.1 Pembangunan Aplikasi Mobile

Upload: university-of-lampung

Post on 15-May-2015

475 views

Category:

Education


2 download

TRANSCRIPT

Page 1: Jeni slides j2 me-06-networking

Networking

Versi 0.1

Pembangunan Aplikasi Mobile

Page 2: Jeni slides j2 me-06-networking

Tujuan

Pada akhir pembelajaran ini, siswa diharapkan berkemampuan untuk :

Menjelaskan tentang Generic Connection Framework dan

penggunaannya dalam dukungan terhadap metode koneksi

yang berbeda-beda

Menjelaskan parameter koneksi dalam format pengalamatan

GCF

Membuat koneksi HTTP / HTTPS connections

Membuat MIDlet yang mengimplementasikan socket TCP dan

datagram UDP

Page 3: Jeni slides j2 me-06-networking

Networking

Generic Connection Framework

HTTP Connection

HTTPS Connection

TCP Socket Connection

Server Socket Connection

Datagram Connection

Page 4: Jeni slides j2 me-06-networking

Generic Connection Framework

Generic Connection Framework mendukung koneksi berbasis paket (Sockets) dan berbasis streaming (Datagrams)

GCF menyediakan API dasar untuk koneksi dalam CLDC. Framework ini menyediakan konektivitas umum seperti HTTP, Sockets dan Datagrams.

GCF menyediakan rangkaian API yang mengabstraksikan seluruh tipe koneksi.

Perlu diperhatikan bahwa tidak seluruh tipe koneksi diperlukan untuk diimplementasikan dalam perangkat MIDP.

Page 5: Jeni slides j2 me-06-networking

Hirarkhi GCF Interface

Page 6: Jeni slides j2 me-06-networking

GCF

scheme://username:password@host:port/path;parameters

scheme://[username[:password]@]host[:port]/path[;parameters]

scheme adalah protokol ataupun metode koneksi. Contoh scheme : http, ftp, https

Username bersifat opsional, namun jika disertakan, @ akan menyatakan parameter host

password juga bersifat opsional dan hanya diperlukan bila username digunakan. Password dipisahkan dari username menggunakan sebuah tanda colon (:)

Page 7: Jeni slides j2 me-06-networking

GCF

scheme://username:password@host:port/path;parameters

scheme://[username[:password]@]host[:port]/path[;parameters]

host – parameter ini diperlukan. Dapat berupa hostname, FQDN ataupun alamat IP tujuan

Port – parameter ini bersifat opsional. Jika tidak terdefinisi, maka port default dalam metode koneksi terpilih akan digunakan.

Path parameters – bersifat opsional, dipisahkan oleh semi-colon

bila digunakan.

Page 8: Jeni slides j2 me-06-networking

Networking

Generic Connection Framework

HTTP Connection

HTTPS Connection

TCP Socket Connection

Server Socket Connection

Datagram Connection

Page 9: Jeni slides j2 me-06-networking

HTTP Connection

HTTP singkatan dari HyperText Transfer Protocol.

Adalah sebuah protokol yang digunakan untuk mentransmisikan halaman web dari web server menuju web browster.

Client (web browser) melakukan request sebuah halaman web dengan menspesifikasikan path dengan menggunakan perintah “GET” ataupun “POST”.

Page 10: Jeni slides j2 me-06-networking

HTTP

Dalam metode “GET”, parameter dispesifikasikan dan tergabung dalam URL. Sebagai contoh, untuk melewatkan variabel dengan nama “id” bernilai 100 kepada “index.jsp”, URL tertulis sebagai berikut : “http://hostname/index.jsp?id=100”. Parameter tambahan dipisahkan dengan tanda (&) "http://hostname/index.jsp?id=100&page=2".

Bilamana method "POST" digunakan, parameter tidak menjadi bagian dalam URL namun akan dikirimkan dalam baris yang berbeda setelah perintah POST.

Page 11: Jeni slides j2 me-06-networking

HTTP Connection

Anda dapat membuka sebuah koneksi HTTP dengan menggunakan Connector.open() dan melakukan casting terhadapnya menggunakan salah satu interface : StreamConnection, ContentConnection dan HTTPConnection.

Namun, dengan menggunakan StreamConnection dan ContentConnection, anda tidak dapat menentukan parameter spesifik HTTP.

Pada saat anda menggunakan StreamConnection, panjang balasan yang akan diterima tidak dapat ditentukan sebelumnya.

Page 12: Jeni slides j2 me-06-networking

HTTP Connection

import javax.microedition.io.*;

HttpConnection connection = null;InputStream iStream = null;byte[] data = null; try { connection = (HttpConnection) Connector.open("http://www.sun.com/");

Page 13: Jeni slides j2 me-06-networking

HTTP Connection

int code = connection.getResponseCode(); switch (code){ case HttpConnection.HTTP_OK: iStream = connection.openInputStream(); int length = (int) connection.getLength(); if (length > 0){ data = new byte[length];

Page 14: Jeni slides j2 me-06-networking

HTTP Connection

int totalBytes = 0; int bytesRead = 0; while ((totalBytes < length) && (bytesRead > 0)) {

bytesRead = iStream.read( data, totalBytes, length - totalBytes); if (bytesRead > 0){ totalBytes += bytesRead; } }

Page 15: Jeni slides j2 me-06-networking

HTTP Redirects

int code = connection.getResponseCode(); switch(code){ case HttpConnection.HTTP_MOVED_PERM: case HttpConnection.HTTP_MOVED_TEMP: case HttpConnection.HTTP_SEE_OTHER: case HttpConnection.HTTP_TEMP_REDIRECT: String newUrl = conn.getHeaderField("Location");

...

Page 16: Jeni slides j2 me-06-networking

Networking

Generic Connection Framework

HTTP Connection

HTTPS Connection

TCP Socket Connection

Server Socket Connection

Datagram Connection

Page 17: Jeni slides j2 me-06-networking

HTTPS Connection

HTTPS adalah HTTP dalam koneksi dengan tingkat keamanan tinggi..

Membuka sebuah koneksi HTTPS mirip dengan membuka koneksi HTTP.

Satu – satunya perbedaan adalah URL yang diberikan pada Connector.open() dan meng-castingnya sebagai HttpsConnection class variable.

Sebuah CertificateException akan terjadi bila terdapat kegagalan dalam verifikasi terhadap certificate

Page 18: Jeni slides j2 me-06-networking

HTTPS

import javax.microedition.io.*;HttpsConnection connection = null;InputStream iStream = null;byte[] data = null; try { connection = (HttpsConnection) Connector.open("https://www.sun.com/"); int code = connection.getResponseCode(); ...} catch (CertificateException ce){ switch (ce.getReason()){ case CertificateException.EXPIRED: ...

Page 19: Jeni slides j2 me-06-networking

Networking

Generic Connection Framework

HTTP Connection

HTTPS Connection

TCP Socket Connection

Server Socket Connection

Datagram Connection

Page 20: Jeni slides j2 me-06-networking

TCP Sockets

Layer TCP menjamin seluruh paket yang dikirimkan telah diterima dalam urutan yang sama pada saat pengiriman.

Jika sebuah paket gagal diterima, maka akan dikirimkan kembali.

Layer TCP menangani pengurutan dan pengiriman ulang paket secara transparan.

Sehingga, protokol HTTP tidak perlu mengatur tentang penguraian dan pengurutan paket karena hal ini akan tangani oleh layer TCP.

Page 21: Jeni slides j2 me-06-networking

TCP Connection

SocketConnection conn = (SocketConnection) Connector.open("socket://www.sun.com:80");

client.setSocketOption(DELAY, 0);

InputStream iStream = conn.openInputStream();OutputStream oStream = conn.openOutputStream();

os.write("GET / HTTP/1.0\n\n".getBytes());

Page 22: Jeni slides j2 me-06-networking

TCP Connection

int c = 0;while((c = is.read()) != -1) { // mengolah data yang diterima ...}

iStream.close();oStream.close();conn.close();

Page 23: Jeni slides j2 me-06-networking

Networking

Generic Connection Framework

HTTP Connection

HTTPS Connection

TCP Socket Connection

Server Socket Connection

Datagram Connection

Page 24: Jeni slides j2 me-06-networking

Server Sockets

Dalam kasus Client-Server, server secara berkesinambungan menunggu koneksi dari client melalui port yang digunakan.

Kita juga dapat menggunakan method Connector.open method untuk membuat server socket.

URL yang diberikan pada open() adalah berformat sama dengan yang digunakan pada socket TCP, dengan hostname yang dibiarkan kosong (mis: socket://:8899).

Page 25: Jeni slides j2 me-06-networking

Server Sockets

ServerSocketConnection conn = (ServerSocketConnection) Connector.open("socket://:8889");

// menunggu koneksi dari ClientSocketConnection client = (SocketConnection) conn.acceptAndOpen();

client.setSocketOption(DELAY, 0);

Page 26: Jeni slides j2 me-06-networking

Server Sockets

InputStream iStream = client.openInputStream();OutputStream oStream = client.openOutputStream();

// membaca/menulis pada input/output streams...

is.close();os.close();client.close();server.close();

Page 27: Jeni slides j2 me-06-networking

Networking

Generic Connection Framework

HTTP Connection

HTTPS Connection

TCP Socket Connection

Server Socket Connection

Datagram Connection

Page 28: Jeni slides j2 me-06-networking

Datagrams

Distribusi paket UDP packets tidak dijamin. Tidak terdapat jaminan bahwa paket uang dikirimkan menggunakan koneksi Datagram akan diterima.

Urutan dari paket yang diterima juga tidak dapat dipastikan. Urutan dari paket yang dikirimkan bisa jadi tidak sama dengan urutan paket yang akan diterima.

Datagram atau packet digunakan pada saat aplikasi tetap dapat beroperasi meskipun paket yang dikirimkan hilang ataupun tidak sesuai urutan.

Page 29: Jeni slides j2 me-06-networking

Datagrams

String url;try { if (isServer){ // sebagai server, menunggu port 8888 url = "datagram://:8888"; } else { // sebagai client, koneksi ke port 8888 // dengan host "localhost" url = "datagram://localhost:8888"; } dc = (DatagramConnection) Connector.open(url);

Page 30: Jeni slides j2 me-06-networking

Datagrams

while (true) { Datagram dgram = dc.newDatagram(128); dc.receive(dgram); if (isServer){ // sebagai server // mengambil alamat koneksi // dalam proses pengiriman pesan

url = dgram.getAddress(); }

Page 31: Jeni slides j2 me-06-networking

Datagrams

if (dgram.getLength() > 0){

String mesg = new String( dgram.getData(), 0, dgram.getLength())); } }}catch (IOException ioe) {}catch (Exception e) {}

Page 32: Jeni slides j2 me-06-networking

Datagrams

private void sendMesg(String line){ try { byte[] bytes = line.getBytes(); Datagram dgram = null; dgram = dc.newDatagram(bytes, bytes.length, url);

dc.send(dgram); } catch (Exception ioe) {}}

Page 33: Jeni slides j2 me-06-networking

Kesimpulan

Generic Connection Framework

HTTP Connection

HTTPS Connection

TCP Socket Connection

Server Socket Connection

Datagram Connection