Your SlideShare is downloading. ×
0
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Jeni slides j2 me-06-networking
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Jeni slides j2 me-06-networking

452

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
452
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Networking Versi 0.1 Pembangunan Aplikasi Mobile
  • 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. 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. 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. Hirarkhi GCF Interface
  • 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. 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. 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. 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. 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 (&amp;) &amp;quot;http://hostname/index.jsp?id=100&amp;page=2&amp;quot;. </li></ul><ul><li>Bilamana method &amp;quot;POST&amp;quot; digunakan, parameter tidak menjadi bagian dalam URL namun akan dikirimkan dalam baris yang berbeda setelah perintah POST. </li></ul>
  • 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. 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(&amp;quot;http://www.sun.com/&amp;quot;); </li></ul>
  • 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 &gt; 0){ </li></ul><ul><li>data = new byte[length]; </li></ul>
  • 14. HTTP Connection <ul><li>int totalBytes = 0; </li></ul><ul><li>int bytesRead = 0; </li></ul><ul><li>while ((totalBytes &lt; length) &amp;&amp; (bytesRead &gt; 0)) { </li></ul><ul><li>bytesRead = iStream.read( </li></ul><ul><li>data, totalBytes, length - totalBytes); </li></ul><ul><li>if (bytesRead &gt; 0){ </li></ul><ul><li>totalBytes += bytesRead; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  • 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(&amp;quot;Location&amp;quot;); </li></ul><ul><li>... </li></ul>
  • 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. 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. 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(&amp;quot;https://www.sun.com/&amp;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. 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. 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. TCP Connection <ul><li>SocketConnection conn = (SocketConnection) </li></ul><ul><li>Connector.open(&amp;quot;socket://www.sun.com:80&amp;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(&amp;quot;GET / HTTP/1.0nn&amp;quot;.getBytes()); </li></ul>
  • 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. 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. 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. Server Sockets <ul><li>ServerSocketConnection conn = (ServerSocketConnection) </li></ul><ul><li>Connector.open(&amp;quot;socket://:8889&amp;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. 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. 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. 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. 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 = &amp;quot;datagram://:8888&amp;quot;; </li></ul><ul><li>} else { </li></ul><ul><li>// sebagai client, koneksi ke port 8888 </li></ul><ul><li>// dengan host &amp;quot;localhost&amp;quot; </li></ul><ul><li>url = &amp;quot;datagram://localhost:8888&amp;quot;; </li></ul><ul><li>} </li></ul><ul><li>dc = (DatagramConnection) Connector.open(url); </li></ul>
  • 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. Datagrams <ul><li>if (dgram.getLength() &gt; 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. 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. 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>

×