Jeni slides j2 me-06-networking
-
Upload
university-of-lampung -
Category
Education
-
view
475 -
download
2
Transcript of Jeni slides j2 me-06-networking
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