Networking Versi 0.1 Pembangunan Aplikasi Mobile
Tujuan <ul><li>Pada akhir pembelajaran ini, siswa diharapkan berkemampuan untuk : </li></ul><ul><li>Menjelaskan tentang Ge...
Networking <ul><li>Generic Connection Framework </li></ul><ul><li>HTTP Connection </li></ul><ul><li>HTTPS Connection </li>...
Generic Connection Framework <ul><li>Generic Connection Framework mendukung koneksi berbasis paket (Sockets) dan berbasis ...
Hirarkhi GCF Interface
GCF <ul><li>scheme://username: [email_address] :port/path;parameters </li></ul><ul><li>scheme://[username[:password]@]host...
GCF <ul><li>scheme://username: [email_address] :port/path;parameters </li></ul><ul><li>scheme://[username[:password]@]host...
Networking <ul><li>Generic Connection Framework </li></ul><ul><li>HTTP Connection </li></ul><ul><li>HTTPS Connection </li>...
HTTP Connection <ul><li>HTTP singkatan dari HyperText Transfer Protocol.  </li></ul><ul><li>Adalah sebuah protokol yang di...
HTTP <ul><li>Dalam metode “GET”, parameter dispesifikasikan dan tergabung dalam URL. Sebagai contoh, untuk melewatkan vari...
HTTP Connection <ul><li>Anda dapat membuka sebuah koneksi HTTP dengan menggunakan Connector.open() dan melakukan casting t...
HTTP Connection <ul><li>import javax.microedition.io.*; </li></ul><ul><li>HttpConnection connection = null; </li></ul><ul>...
HTTP Connection <ul><li>int code = connection.getResponseCode(); </li></ul><ul><li>switch (code){ </li></ul><ul><li>case H...
HTTP Connection <ul><li>int totalBytes = 0; </li></ul><ul><li>int bytesRead = 0; </li></ul><ul><li>while ((totalBytes < le...
HTTP Redirects <ul><li>int code = connection.getResponseCode(); </li></ul><ul><li>switch(code){ </li></ul><ul><li>case Htt...
Networking <ul><li>Generic Connection Framework </li></ul><ul><li>HTTP Connection </li></ul><ul><li>HTTPS Connection </li>...
HTTPS Connection <ul><li>HTTPS adalah HTTP dalam koneksi dengan tingkat keamanan tinggi..  </li></ul><ul><li>Membuka sebua...
HTTPS <ul><li>import javax.microedition.io.*; </li></ul><ul><li>HttpsConnection connection = null; </li></ul><ul><li>Input...
Networking <ul><li>Generic Connection Framework </li></ul><ul><li>HTTP Connection </li></ul><ul><li>HTTPS Connection </li>...
TCP Sockets <ul><li>Layer TCP menjamin seluruh paket yang dikirimkan telah diterima dalam urutan yang sama pada saat pengi...
TCP Connection <ul><li>SocketConnection conn = (SocketConnection)  </li></ul><ul><li>Connector.open(&quot;socket://www.sun...
TCP Connection <ul><li>int c = 0; </li></ul><ul><li>while((c = is.read()) != -1) { </li></ul><ul><li>// mengolah data yang...
Networking <ul><li>Generic Connection Framework </li></ul><ul><li>HTTP Connection </li></ul><ul><li>HTTPS Connection </li>...
Server Sockets <ul><li>Dalam kasus Client-Server, server secara berkesinambungan menunggu koneksi dari client melalui port...
Server Sockets <ul><li>ServerSocketConnection conn = (ServerSocketConnection)  </li></ul><ul><li>Connector.open(&quot;sock...
Server Sockets <ul><li>InputStream iStream = client.openInputStream(); </li></ul><ul><li>OutputStream oStream = client.ope...
Networking <ul><li>Generic Connection Framework </li></ul><ul><li>HTTP Connection </li></ul><ul><li>HTTPS Connection </li>...
Datagrams <ul><li>Distribusi paket UDP packets tidak dijamin. Tidak terdapat jaminan bahwa paket uang dikirimkan menggunak...
Datagrams <ul><li>String url; </li></ul><ul><li>try {  </li></ul><ul><li>if (isServer){  </li></ul><ul><li>// sebagai serv...
Datagrams <ul><li>while (true) { </li></ul><ul><li>Datagram dgram = dc.newDatagram(128); </li></ul><ul><li>dc.receive(dgra...
Datagrams <ul><li>if (dgram.getLength() > 0){  </li></ul><ul><li>String mesg = new String( </li></ul><ul><li>dgram.getData...
Datagrams <ul><li>private void sendMesg(String line){ </li></ul><ul><li>try { </li></ul><ul><li>byte[] bytes = line.getByt...
Kesimpulan <ul><li>Generic Connection Framework </li></ul><ul><li>HTTP Connection </li></ul><ul><li>HTTPS Connection </li>...
Upcoming SlideShare
Loading in …5
×

Jeni slides j2 me-06-networking

550 views
499 views

Published on

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
550
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Jeni slides j2 me-06-networking

  1. 1. Networking Versi 0.1 Pembangunan Aplikasi Mobile
  2. 2. Tujuan <ul><li>Pada akhir pembelajaran ini, siswa diharapkan berkemampuan untuk : </li></ul><ul><li>Menjelaskan tentang Generic Connection Framework dan penggunaannya dalam dukungan terhadap metode koneksi yang berbeda-beda </li></ul><ul><li>Menjelaskan parameter koneksi dalam format pengalamatan GCF </li></ul><ul><li>Membuat koneksi HTTP / HTTPS connections </li></ul><ul><li>Membuat MIDlet yang mengimplementasikan socket TCP dan datagram UDP </li></ul>
  3. 3. Networking <ul><li>Generic Connection Framework </li></ul><ul><li>HTTP Connection </li></ul><ul><li>HTTPS Connection </li></ul><ul><li>TCP Socket Connection </li></ul><ul><li>Server Socket Connection </li></ul><ul><li>Datagram Connection </li></ul>
  4. 4. Generic Connection Framework <ul><li>Generic Connection Framework mendukung koneksi berbasis paket (Sockets) dan berbasis streaming (Datagrams)‏ </li></ul><ul><li>GCF menyediakan API dasar untuk koneksi dalam CLDC. Framework ini menyediakan konektivitas umum seperti HTTP, Sockets dan Datagrams. </li></ul><ul><li>GCF menyediakan rangkaian API yang mengabstraksikan seluruh tipe koneksi. </li></ul><ul><li>Perlu diperhatikan bahwa tidak seluruh tipe koneksi diperlukan untuk diimplementasikan dalam perangkat MIDP. </li></ul>
  5. 5. Hirarkhi GCF Interface
  6. 6. GCF <ul><li>scheme://username: [email_address] :port/path;parameters </li></ul><ul><li>scheme://[username[:password]@]host[:port]/path[;parameters] </li></ul><ul><li>scheme adalah protokol ataupun metode koneksi. Contoh scheme : http, ftp, https </li></ul><ul><li>Username bersifat opsional, namun jika disertakan, @ akan menyatakan parameter host </li></ul><ul><li>password juga bersifat opsional dan hanya diperlukan bila username digunakan. Password dipisahkan dari username menggunakan sebuah tanda colon (:)‏ </li></ul>
  7. 7. GCF <ul><li>scheme://username: [email_address] :port/path;parameters </li></ul><ul><li>scheme://[username[:password]@]host[:port]/path[;parameters] </li></ul><ul><li>host – parameter ini diperlukan. Dapat berupa hostname, FQDN ataupun alamat IP tujuan </li></ul><ul><li>Port – parameter ini bersifat opsional. Jika tidak terdefinisi, maka port default dalam metode koneksi terpilih akan digunakan. </li></ul><ul><li>Path </li></ul><ul><li>parameters – bersifat opsional, dipisahkan oleh semi-colon bila digunakan. </li></ul>
  8. 8. Networking <ul><li>Generic Connection Framework </li></ul><ul><li>HTTP Connection </li></ul><ul><li>HTTPS Connection </li></ul><ul><li>TCP Socket Connection </li></ul><ul><li>Server Socket Connection </li></ul><ul><li>Datagram Connection </li></ul>
  9. 9. HTTP Connection <ul><li>HTTP singkatan dari HyperText Transfer Protocol. </li></ul><ul><li>Adalah sebuah protokol yang digunakan untuk mentransmisikan halaman web dari web server menuju web browster. </li></ul><ul><li>Client (web browser) melakukan request sebuah halaman web dengan menspesifikasikan path dengan menggunakan perintah “GET” ataupun “POST”. </li></ul>
  10. 10. HTTP <ul><li>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 (&) &quot;http://hostname/index.jsp?id=100&page=2&quot;. </li></ul><ul><li>Bilamana method &quot;POST&quot; digunakan, parameter tidak menjadi bagian dalam URL namun akan dikirimkan dalam baris yang berbeda setelah perintah POST. </li></ul>
  11. 11. HTTP Connection <ul><li>Anda dapat membuka sebuah koneksi HTTP dengan menggunakan Connector.open() dan melakukan casting terhadapnya menggunakan salah satu interface : StreamConnection, ContentConnection dan HTTPConnection. </li></ul><ul><li>Namun, dengan menggunakan StreamConnection dan ContentConnection, anda tidak dapat menentukan parameter spesifik HTTP . </li></ul><ul><li>Pada saat anda menggunakan StreamConnection, panjang balasan yang akan diterima tidak dapat ditentukan sebelumnya. </li></ul>
  12. 12. HTTP Connection <ul><li>import javax.microedition.io.*; </li></ul><ul><li>HttpConnection connection = null; </li></ul><ul><li>InputStream iStream = null; </li></ul><ul><li>byte[] data = null; </li></ul><ul><li>try { </li></ul><ul><li>connection = (HttpConnection) </li></ul><ul><li>Connector.open(&quot;http://www.sun.com/&quot;); </li></ul>
  13. 13. HTTP Connection <ul><li>int code = connection.getResponseCode(); </li></ul><ul><li>switch (code){ </li></ul><ul><li>case HttpConnection.HTTP_OK: </li></ul><ul><li>iStream = connection.openInputStream(); </li></ul><ul><li>int length = (int) connection.getLength(); </li></ul><ul><li>if (length > 0){ </li></ul><ul><li>data = new byte[length]; </li></ul>
  14. 14. HTTP Connection <ul><li>int totalBytes = 0; </li></ul><ul><li>int bytesRead = 0; </li></ul><ul><li>while ((totalBytes < length) && (bytesRead > 0)) { </li></ul><ul><li>bytesRead = iStream.read( </li></ul><ul><li>data, totalBytes, length - totalBytes); </li></ul><ul><li>if (bytesRead > 0){ </li></ul><ul><li>totalBytes += bytesRead; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  15. 15. HTTP Redirects <ul><li>int code = connection.getResponseCode(); </li></ul><ul><li>switch(code){ </li></ul><ul><li>case HttpConnection.HTTP_MOVED_PERM: </li></ul><ul><li>case HttpConnection.HTTP_MOVED_TEMP: </li></ul><ul><li>case HttpConnection.HTTP_SEE_OTHER: </li></ul><ul><li>case HttpConnection.HTTP_TEMP_REDIRECT: </li></ul><ul><li>String newUrl = conn.getHeaderField(&quot;Location&quot;); </li></ul><ul><li>... </li></ul>
  16. 16. Networking <ul><li>Generic Connection Framework </li></ul><ul><li>HTTP Connection </li></ul><ul><li>HTTPS Connection </li></ul><ul><li>TCP Socket Connection </li></ul><ul><li>Server Socket Connection </li></ul><ul><li>Datagram Connection </li></ul>
  17. 17. HTTPS Connection <ul><li>HTTPS adalah HTTP dalam koneksi dengan tingkat keamanan tinggi.. </li></ul><ul><li>Membuka sebuah koneksi HTTPS mirip dengan membuka koneksi HTTP. </li></ul><ul><li>Satu – satunya perbedaan adalah URL yang diberikan pada Connector.open() dan meng-castingnya sebagai HttpsConnection class variable. </li></ul><ul><li>Sebuah CertificateException akan terjadi bila terdapat kegagalan dalam verifikasi terhadap certificate </li></ul>
  18. 18. HTTPS <ul><li>import javax.microedition.io.*; </li></ul><ul><li>HttpsConnection connection = null; </li></ul><ul><li>InputStream iStream = null; </li></ul><ul><li>byte[] data = null; </li></ul><ul><li>try { </li></ul><ul><li>connection = (HttpsConnection)‏ </li></ul><ul><li>Connector.open(&quot;https://www.sun.com/&quot;); </li></ul><ul><li>int code = connection.getResponseCode(); </li></ul><ul><li>... </li></ul><ul><li>} catch (CertificateException ce){ </li></ul><ul><li>switch (ce.getReason()){ </li></ul><ul><li>case CertificateException.EXPIRED: </li></ul><ul><li>... </li></ul>
  19. 19. Networking <ul><li>Generic Connection Framework </li></ul><ul><li>HTTP Connection </li></ul><ul><li>HTTPS Connection </li></ul><ul><li>TCP Socket Connection </li></ul><ul><li>Server Socket Connection </li></ul><ul><li>Datagram Connection </li></ul>
  20. 20. TCP Sockets <ul><li>Layer TCP menjamin seluruh paket yang dikirimkan telah diterima dalam urutan yang sama pada saat pengiriman. </li></ul><ul><li>Jika sebuah paket gagal diterima, maka akan dikirimkan kembali. </li></ul><ul><li>Layer TCP menangani pengurutan dan pengiriman ulang paket secara transparan. </li></ul><ul><li>Sehingga, protokol HTTP tidak perlu mengatur tentang penguraian dan pengurutan paket karena hal ini akan tangani oleh layer TCP. </li></ul>
  21. 21. TCP Connection <ul><li>SocketConnection conn = (SocketConnection) </li></ul><ul><li>Connector.open(&quot;socket://www.sun.com:80&quot;); </li></ul><ul><li>client.setSocketOption(DELAY, 0); </li></ul><ul><li>InputStream iStream = conn.openInputStream(); </li></ul><ul><li>OutputStream oStream = conn.openOutputStream(); </li></ul><ul><li>os.write(&quot;GET / HTTP/1.0nn&quot;.getBytes()); </li></ul>
  22. 22. TCP Connection <ul><li>int c = 0; </li></ul><ul><li>while((c = is.read()) != -1) { </li></ul><ul><li>// mengolah data yang diterima </li></ul><ul><li>... </li></ul><ul><li>} </li></ul><ul><li>iStream.close(); </li></ul><ul><li>oStream.close(); </li></ul><ul><li>conn.close(); </li></ul>
  23. 23. Networking <ul><li>Generic Connection Framework </li></ul><ul><li>HTTP Connection </li></ul><ul><li>HTTPS Connection </li></ul><ul><li>TCP Socket Connection </li></ul><ul><li>Server Socket Connection </li></ul><ul><li>Datagram Connection </li></ul>
  24. 24. Server Sockets <ul><li>Dalam kasus Client-Server, server secara berkesinambungan menunggu koneksi dari client melalui port yang digunakan. </li></ul><ul><li>Kita juga dapat menggunakan method Connector.open method untuk membuat server socket. </li></ul><ul><li>URL yang diberikan pada open() adalah berformat sama dengan yang digunakan pada socket TCP, dengan hostname yang dibiarkan kosong (mis: socket://:8899). </li></ul>
  25. 25. Server Sockets <ul><li>ServerSocketConnection conn = (ServerSocketConnection) </li></ul><ul><li>Connector.open(&quot;socket://:8889&quot;); </li></ul><ul><li>// menunggu koneksi dari Client </li></ul><ul><li>SocketConnection client = (SocketConnection) conn.acceptAndOpen(); </li></ul><ul><li>client.setSocketOption(DELAY, 0); </li></ul>
  26. 26. Server Sockets <ul><li>InputStream iStream = client.openInputStream(); </li></ul><ul><li>OutputStream oStream = client.openOutputStream(); </li></ul><ul><li>// membaca/menulis pada input/output streams </li></ul><ul><li>... </li></ul><ul><li>is.close(); </li></ul><ul><li>os.close(); </li></ul><ul><li>client.close(); </li></ul><ul><li>server.close(); </li></ul>
  27. 27. Networking <ul><li>Generic Connection Framework </li></ul><ul><li>HTTP Connection </li></ul><ul><li>HTTPS Connection </li></ul><ul><li>TCP Socket Connection </li></ul><ul><li>Server Socket Connection </li></ul><ul><li>Datagram Connection </li></ul>
  28. 28. Datagrams <ul><li>Distribusi paket UDP packets tidak dijamin. Tidak terdapat jaminan bahwa paket uang dikirimkan menggunakan koneksi Datagram akan diterima. </li></ul><ul><li>Urutan dari paket yang diterima juga tidak dapat dipastikan. Urutan dari paket yang dikirimkan bisa jadi tidak sama dengan urutan paket yang akan diterima. </li></ul><ul><li>Datagram atau packet digunakan pada saat aplikasi tetap dapat beroperasi meskipun paket yang dikirimkan hilang ataupun tidak sesuai urutan. </li></ul>
  29. 29. Datagrams <ul><li>String url; </li></ul><ul><li>try { </li></ul><ul><li>if (isServer){ </li></ul><ul><li>// sebagai server, menunggu port 8888 </li></ul><ul><li>url = &quot;datagram://:8888&quot;; </li></ul><ul><li>} else { </li></ul><ul><li>// sebagai client, koneksi ke port 8888 </li></ul><ul><li>// dengan host &quot;localhost&quot; </li></ul><ul><li>url = &quot;datagram://localhost:8888&quot;; </li></ul><ul><li>} </li></ul><ul><li>dc = (DatagramConnection) Connector.open(url); </li></ul>
  30. 30. Datagrams <ul><li>while (true) { </li></ul><ul><li>Datagram dgram = dc.newDatagram(128); </li></ul><ul><li>dc.receive(dgram); </li></ul><ul><li>if (isServer){ </li></ul><ul><li>// sebagai server </li></ul><ul><li>// mengambil alamat koneksi </li></ul><ul><li>// dalam proses pengiriman pesan </li></ul><ul><li>url = dgram.getAddress(); </li></ul><ul><li>} </li></ul>
  31. 31. Datagrams <ul><li>if (dgram.getLength() > 0){ </li></ul><ul><li>String mesg = new String( </li></ul><ul><li>dgram.getData(), </li></ul><ul><li>0, </li></ul><ul><li>dgram.getLength())); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>catch (IOException ioe) {} </li></ul><ul><li>catch (Exception e) {} </li></ul>
  32. 32. Datagrams <ul><li>private void sendMesg(String line){ </li></ul><ul><li>try { </li></ul><ul><li>byte[] bytes = line.getBytes(); </li></ul><ul><li>Datagram dgram = null; </li></ul><ul><li>dgram = </li></ul><ul><li>dc.newDatagram(bytes, bytes.length, url); </li></ul><ul><li>dc.send(dgram); </li></ul><ul><li>} catch (Exception ioe) {} </li></ul><ul><li>} </li></ul>
  33. 33. Kesimpulan <ul><li>Generic Connection Framework </li></ul><ul><li>HTTP Connection </li></ul><ul><li>HTTPS Connection </li></ul><ul><li>TCP Socket Connection </li></ul><ul><li>Server Socket Connection </li></ul><ul><li>Datagram Connection </li></ul>

×