jeni slides j2 me-06-networking

Post on 15-May-2015

475 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Networking

Versi 0.1

Pembangunan Aplikasi Mobile

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

Networking

Generic Connection Framework

HTTP Connection

HTTPS Connection

TCP Socket Connection

Server Socket Connection

Datagram Connection

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.

Hirarkhi GCF Interface

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 (:)

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.

Networking

Generic Connection Framework

HTTP Connection

HTTPS Connection

TCP Socket Connection

Server Socket Connection

Datagram Connection

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”.

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.

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.

HTTP Connection

import javax.microedition.io.*;

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

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];

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; } }

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");

...

Networking

Generic Connection Framework

HTTP Connection

HTTPS Connection

TCP Socket Connection

Server Socket Connection

Datagram Connection

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

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: ...

Networking

Generic Connection Framework

HTTP Connection

HTTPS Connection

TCP Socket Connection

Server Socket Connection

Datagram Connection

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.

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());

TCP Connection

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

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

Networking

Generic Connection Framework

HTTP Connection

HTTPS Connection

TCP Socket Connection

Server Socket Connection

Datagram Connection

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).

Server Sockets

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

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

client.setSocketOption(DELAY, 0);

Server Sockets

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

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

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

Networking

Generic Connection Framework

HTTP Connection

HTTPS Connection

TCP Socket Connection

Server Socket Connection

Datagram Connection

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.

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);

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(); }

Datagrams

if (dgram.getLength() > 0){

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

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) {}}

Kesimpulan

Generic Connection Framework

HTTP Connection

HTTPS Connection

TCP Socket Connection

Server Socket Connection

Datagram Connection

top related