Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Praktikum pemrograman jaringan-1-3

2,219 views

Published on

  • Be the first to comment

Praktikum pemrograman jaringan-1-3

  1. 1. Praktikum Pemrograman Jaringan PRAKTIKUM 1 Pemrograman Jaringan Tujuan Instruksional Setelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk: 1. Memahami protocol jaringan seperti TCP, UDP dan SCTP 2. Mengenal kemampuan Java untuk pemrograman jaringan 1. Protocol Jaringan Internet Protokol (IP) adalah protokol lapisan jaringan (network layer dalam OSI Reference Model) atau protokol lapisan internetwork (internetwork layer dalam DARPA Reference Model) yang digunakan oleh protokol TCP/IP untuk melakukan pengalamatan dan routing paket data antar host-host di jaringan komputer berbasis TCP/IP. Transmission Control Protocol (TCP) adalah suatu protokol yang berada di lapisan transpor (baik itu dalam tujuh lapis model referensi OSI atau model DARPA) yang berorientasi sambungan (connection-oriented) dan dapat diandalkan (reliable). UDP, singkatan dari User Datagram Protocol, adalah salah satu protokol lapisan transpor TCP/IP yang mendukung komunikasi yang tidak andal (unreliable), tanpa koneksi (connectionless) antara host-host dalam jaringan yang menggunakan TCP/IP. 2. Pemrograman Jaringan dengan Java Pemrograman socket adalah cara untuk menggunakan komponen API (Application Programming Interface) socket untuk membuat sebuah aplikasi. Java telah menyediakan paket java.net yang berisi kelas-kelas dan interface yang menyediakan API (Application Programming Interface) level rendah (Socket, ServerSocket, DatagramSocket) dan level tinggi (URL, URLConnection). Socket merupakan fasilitas IPC (Inter Proses Communication) untuk aplikasi jaringan. Cara kerja socket dapat digambarkan seperti pada gambar 1.1 dan gambar 1.2.
  2. 2. Praktikum Pemrograman Jaringan Gambar 1.2. Server menghubungi client Sebuah socket dilengkapi dengan alamat, yang terdiri atas IP address tujuan dan nomor port. Alamat IP dapat menggunakan alamat jaringan lokal (LAN) maupun alamat internet. Jadi socket dapat digunakan untuk IPC pada LAN maupun Internet. Nomor port merupakan bilangan bulat yang digunakan untuk membedakan layanan-layanan yang berjalan pada komputer server yang sama. Pengguna layanan menggunakan nomor port ini untuk menghubungi komputer server dengan workstation (client). Dengan menggunakan nomor port yang standar, komunikasi dapat terjadi antar beberapa komputer dari jarak jauh untuk mengerjakan berbagai layanan jaringan, karena baik pengirim maupun penerima saling mengetahui ke mana data harus dikirim menggunakan nomor port tersebut. Sebagai contoh, semua sistem menggunakan nomor port 23 untuk aplikasi TELNET atau port 80 untuk aplikasi website. Oleh karena pada perancangan sistem akan dibuat suatu jenis layanan baru dengan memanfaatkan socket, maka dapat dibuat nomor port tersendiri untuk aplikasi tersebut. 3. Paket Java Network Beberapa kelas java.net yang dapat digunakan dalam menerapkan pemrograman jaringan adalah:  Socket(InetAddress address, int port) : untuk membuat sebuah stream socket dan koneksi ke suatu nomor port pada sebuah komputer yang memiliki alamat IP.  Socket(String host, int port) : untuk membuat sebuah stream socket dan juga koneksi ke suatu port tertentu pada sebuah komputer berdasar namanya.  Socket(InetAddress address, int port, InetAddress localAddr,int localPort) / Socket(String host, int port, InetAddress localAddr, int localPort) : untuk membuat sebuah socket dan mengkoneksikannya ke port yang dituju pada alamat IP yang disebutkan pada parameter address atau nama host. Selain itu juga akan dilakukan bind socket ke alamat lokal dan port lokal. (Hal ini dilakukan jika koneksi antara client dan server membutuhkan nomor port yang sudah ditentukan).  getInetAddress() : untuk mendapatkan nama host yang dituju dan alamat IPnya  getPort() : untuk mendapatkan nomor remote host  getLocalPort() : untuk mendapatkan nomor port localhost  getLocalAddress() : untuk mendapatkan alamat local dimana socket digunakan
  3. 3. Praktikum Pemrograman Jaringan 3  getInputStream() : mengembalikan objek input stream dari socket  getOutputStream() : mengembalikan objek output stream ke socket  ServerSocket( int port [, int backlog [, InetAddress bindAddress ]] ) : untuk membuat sebuah server dengan port tertentu, batasan jumlah antrian (backlog), dan alamat IP bindAddress.  DatagramSocket(int port) : untuk menyatakan penggunaan suatu nomor port sebagai "pintu" untuk menerima koneksi dari client.  DatagramSocket(int port, InetAddress laddr) : untuk membentuk koneksi dengan protokol UDP pada alamat IP lokal tertentu dan pada nomor port tertentu.  DatagramSocket() : untuk membentuk koneksi dengan protokol UDP pada alamat IP lokal host dengan penentuan nomor portnya secara random berdasar tersedianya nomor port yang dapat digunakan.  DatagramPacket(byte[] buf, int length) : untuk mengambil informasi.  DatagramPacket(byte[] buf, int length, InetAddress address, int port) : untuk membuat paket Datagram yang akan mengirim data. Constructor ini memerlukan informasi array byte yang akan dikirim dan panjangnya, serta alamat dan port yang dituju. Latihan 1: /* package udpserver; */ import java.net.*; import java.io.*; public class Main { public static void main(String[] args) { try{ System.out.println ("UDP Server demo"); System.out.println ("Binding ke port 8088"); DatagramSocket socket = new DatagramSocket(8088); System.out.println ("Bound local port: " + socket.getLocalPort()); System.out.println ("Menunggu packet datang..."); DatagramPacket packet = new DatagramPacket( new byte[256], 256 ); socket.receive(packet); System.out.println ("Packet diterima!"); InetAddress remote_addr = packet.getAddress(); System.out.println("IP Address pengirim : " + remote_addr.getHostAddress() ); System.out.println ("Port pengirim: " + packet.getPort()); ByteArrayInputStream bin = new ByteArrayInputStream(packet.getData()); for (int i=0; i < packet.getLength(); i++){ int data = bin.read(); if (data == -1) break; else
  4. 4. Praktikum Pemrograman Jaringan 4 System.out.print ((char)data) ; } socket.close(); } catch(Exception ex){ System.out.println("Error: " + ex.getMessage()); } } } Latihan 2: /* package udpclient; */ import java.net.*; import java.io.*; public class Main { public static void main(String[] args) { try{ String hostname = "akur"; System.out.println ("UDP client demo"); System.out.println ("Binding ke local port"); DatagramSocket socket = new DatagramSocket(); System.out.println ("Bound local port: " + socket.getLocalPort()); ByteArrayOutputStream stream = new ByteArrayOutputStream(); PrintStream pOut = new PrintStream(stream); pOut.print ("Apa kabar!"); byte[] barray = stream.toByteArray(); DatagramPacket packet = new DatagramPacket(barray, barray.length ); System.out.println ("Target hostname: " + hostname ); InetAddress remote_addr = InetAddress.getByName(hostname); System.out.println ("IP Address Hostname: " + remote_addr.getHostAddress()); packet.setAddress (remote_addr); packet.setPort (8088); socket.send(packet); System.out.println ("Packet telah terkirim!"); } catch(Exception ex){ System.out.println("Error: " + ex.getMessage()); } } } 4. Tugas Tuliskan struktur program java yang memanfaatkan kemampuan java dalam menangani jaringan.
  5. 5. Praktikum Pemrograman Jaringan PRAKTIKUM 2 Stream Tujuan Instruksional Setelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk: 1. Memahami penggunaan stream. 2. Membuat program pemanfaatan stream. 1. Stream Stream digunakan untuk menangani proses I/O di Java. Input stream digunakan untuk membaca data dan output stream untuk menulis data. Kelas stream yang berbeda, seperti java.io.FileInputStream dan sun.net.TelnetOutputStream, digunakan untuk membaca dan menulis sumber data tertentu. Namun, semua output stream memiliki metode dasar yang sama untuk menulis data dan input stream menggunakan metode dasar yang sama untuk membaca data. Subclass dari OutputStream menggunakan metode untuk menulis data pada media tertentu. Misalnya, FileOutputStream menggunakan metode ini untuk menulis data ke dalam file. Metode dasar OutputStream adalah write (int b). Metode ini mengambil sebuah integer dari 0 sampai 255 sebagai sebuah argumen dan menulis byte sesuai dengan output stream. Subclass dari InputStream menggunakan metode ini untuk membaca data dari media tertentu. Misalnya, FileInputStream membaca data dari file. Sebuah TelnetInputStream membaca data dari koneksi jaringan. Sebuah ByteArrayInputStream membaca data dari sebuah array byte. Metode dasar InputStream adalah membaca noargs () method. Metode ini membaca satu byte data dari sumber input stream dan mengembalikannya sebagai int dari 0 sampai 255. 2. Reader dan Writer Subkelas yang paling penting dari Reader dan Writer adalah InputStreamReader dan kelas OutputStreamWriter. Sebuah InputStreamReader berisi input stream dasar dari yang membaca byte mentah. Ini menerjemahkan byte ini menjadi karakter Unicode sesuai dengan pengkodean tertentu. Sebuah OutputStreamWriter menerima karakter Unicode dari program yang berjalan. Kemudian menerjemahkan karakter tersebut ke dalam byte menggunakan pengkodean tertentu dan menulis byte ke output stream yang mendasarinya.
  6. 6. Praktikum Pemrograman Jaringan Selain dua kelas tersebut, paket java.io menyediakan beberapa pembaca baku dan kelas penulis yang membaca karakter tanpa langsung membutuhkan arus input yang mendasarinya, antara lain adalah : FileReader FileWriter StringReader StringWriter CharArrayReader CharArrayWriter Latihan 3 /* package inputdemo; */ import java.io.*; public class Main { public static void main(String[] args) { // TODO code application logic here String inputFile = "c:tempmydata.txt"; try{ InputStream input = new FileInputStream(inputFile); /* pembacaan dengan per byte */ int byteData = input.read(); while(byteData !=-1){ String strData = new String(new byte[]{(byte)byteData}); System.out.println("Data: " + strData); System.out.println("Data byte: " + byteData); byteData = input.read(); } /* pembacaan dengan per 20 byte */ /* byte[] myData = new byte[20]; int data = input.read(myData); while(data !=-1){ String strData = new String(myData); System.out.println("Data: " + strData); System.out.println("Panjang data terbaca: " + data ); data = input.read(myData); } */ input.close(); }catch(IOException e){ System.err.println(e.getMessage()); }
  7. 7. Praktikum Pemrograman Jaringan } } Latihan 4: /* package outputdemo; */ import java.io.*; public class Main { public static void main(String[] args) { // TODO code application logic here String source = "c:tempmydata.txt"; String dest = "c:tempmydata_out.txt"; try{ InputStream input = new FileInputStream(source); byte[] byData = new byte[10]; int data = input.read(byData); OutputStream output = new FileOutputStream(dest); while(data !=-1){ String strData = new String(byData); System.out.println("Read data: " + strData ); System.out.println("Panjang pembacaan data: " + data ); System.out.print("Tulis ke file ....."); output.write(data); System.out.println("done."); data = input.read(byData); } input.close(); output.close(); System.out.println("Done."); }catch(IOException e){ System.err.println(e.getMessage()); } } } Latihan 5: /* package simpleconnectfilter; */ import java.io.*; public class SimpleConnectFilter { public static void main(String[] args) { // TODO code application logic here String file = "c:temptest_data.txt"; try { FileOutputStream fout = new FileOutputStream(file); PrintStream pout = new PrintStream (fout);
  8. 8. Praktikum Pemrograman Jaringan pout.println ("Selamat datang"); pout.println ("Di pemrograman jaringan - java"); System.out.println("Done"); } catch (IOException ex) { System.err.println(ex.getMessage()); } } } Latihan 6: import java.io.*; class input 1 { public static void main(String[] args) throws IOException { String str; BufferedReader br; br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Masukkan Nama Anda : "); str= br.readLine(); System.out.println("Hello "+ str); } } Latihan 7: import java.io.*; class input2 { public static void main(String[] args) throws IOException { int angka1, angka2; BufferedReader br; br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Masukkan Angka1 : ");
  9. 9. Praktikum Pemrograman Jaringan angka1 = Integer.parseInt(br.readLine()); System.out.print("Masukkan Angka2 : "); angka2 = Integer.parseInt(br.readLine()); System.out.println("Angka1 Anda : "+ angka1); System.out.println("Angka2 Anda : "+ angka2); } } 4. Tugas Buatlah program untuk input nim, nama, nilai uts dan uas.
  10. 10. Praktikum Pemrograman Jaringan PRAKTIKUM 3 Internet Address Tujuan Instruksional Setelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk: 1. Memahami internet address clas 2. Membuat program penerapan internet address clas 1. Internet Address Kelas java.net.InetAddress adalah level tingkat tinggi dari java untuk representasi sebuah alamat IP, baik IPv4 dan IPv6. Hal ini digunakan oleh sebagian besar kelas-kelas jaringan lainnya, termasuk Socket, ServerSocket, URL, DatagramSocket, DatagramPacket, dan banyak lagi. Umumnya, itu mencakup nama host dan alamat IP. InetAddress memiliki tiga metode statis yang mengembalikan sesuai inisialisasi objek. Metode tersebut adalah:  public static InetAddress getByName(String hostName) throws UnknownHostException  public static InetAddress [] getAllByName(String hostName) throws UnknownHostException  public static InetAddress getLocalHost( ) throws UnknownHostException Ketiga metode ini dapat membuat koneksi ke server DNS lokal untuk mengisi informasi dalam objek InetAddress. Metode lainnya di kelas ini, seperti getAddress () dan getHostName (), sebagian besar bekerja dengan informasi yang diberikan oleh salah satu dari tiga metode. Latihan 8: /* package javaapacheapp; */ import java.io.*; import org.apache.http.*; import org.apache.http.client.*; import org.apache.http.impl.client.*; import org.apache.http.client.methods.*; public class JavaApacheApp { public static void main(String[] args) throws IOException { // TODO code application logic here HttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet("http://www.aguskurniawan.net/book/testhalaman.html"); HttpResponse response = httpclient.execute(httpget);
  11. 11. Praktikum Pemrograman Jaringan HttpEntity entity = response.getEntity(); if (entity != null) { BufferedReader rd = new BufferedReader(new InputStreamReader( response.getEntity().getContent())); String line = ""; while ((line = rd.readLine()) != null) { System.out.println(line); } rd.close(); } } } Latihan 9: /* package javaapachepostapp; */ import java.io.*; import java.util.*; import org.apache.http.*; import org.apache.http.client.*; import org.apache.http.client.entity.*; import org.apache.http.impl.client.*; import org.apache.http.client.methods.*; import org.apache.http.message.*; public class JavaApachePostApp { public static void main(String[] args) throws IOException { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://www.aguskurniawan.net/book/default.aspx"); List <NameValuePair> nvps = new ArrayList <NameValuePair>(); nvps.add(new BasicNameValuePair("__VIEWSTATE", "")); nvps.add(new BasicNameValuePair("__EVENTVALIDATION", "")); nvps.add(new BasicNameValuePair("txtName", "Agus+Kurniawan")); nvps.add(new BasicNameValuePair("btnSubmit", "Submit")); httppost.setEntity(new UrlEncodedFormEntity(nvps)); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); if (entity != null) { BufferedReader rd = new BufferedReader(new InputStreamReader( response.getEntity().getContent())); String line = ""; while ((line = rd.readLine()) != null) { System.out.println(line); } rd.close(); } } }
  12. 12. Praktikum Pemrograman Jaringan Latihan 10: /* package javahttp; */ import java.io.*; import java.net.*; /** * * @author Agus Kurniawan */ public class JavaHttp { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here try { System.out.println("Connecting..."); URL url = new URL("http://aguskurniawan.net/book/testhalaman.html"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); System.out.println("Server Respon:"); System.out.println(" Response Code: " + con.getResponseCode()); BufferedReader in = new BufferedReader( new InputStreamReader( con.getInputStream())); String line; System.out.println("Data Respon:"); while ((line = in.readLine()) != null) System.out.println(line); in.close(); con.disconnect(); } catch (UnknownHostException e) { System.err.println(e.getMessage()); System.exit(1); } catch (IOException e) { System.err.println(e.getMessage()); System.exit(1); } } } Latihan 11: /* package javahttppost; */ import java.io.*; import java.net.*; public class JavaHttpPost { public static void main(String[] args) { // TODO code application logic here
  13. 13. Praktikum Pemrograman Jaringan try { String data = "__VIEWSTATE=%2FwEPDwUKMTU5MTA2ODYwOWRknm6e9vAwBiwK6VHieAu%2BMezs%2BjU%3D&__EVE NTVALIDATION=%2FwEWAwLo06OhBQLEhISFCwLCi9reA1smDvPQScCnGsHgE6G0j0tlx4UV&txtName =Agus+Kurniawan&btnSubmit=Submit"; System.out.println("Connecting..."); URL url = new URL("http://aguskurniawan.net/book/default.aspx"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); System.out.println("Connected"); System.out.println("Kirim data HTTP Post"); con.setRequestMethod("POST"); con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); con.setRequestProperty("Content-Length", "" + Integer.toString(data.getBytes().length)); con.setRequestProperty("Content-Language", "en-US"); con.setUseCaches (false); con.setDoInput(true); con.setDoOutput(true); OutputStreamWriter out = new OutputStreamWriter( con.getOutputStream()); out.write(data); out.flush(); out.close(); System.out.println("Data Respon:"); BufferedReader in = new BufferedReader( new InputStreamReader( con.getInputStream())); String line; while ((line = in.readLine()) != null) System.out.println(line); out.close(); in.close(); con.disconnect(); } catch (UnknownHostException e) { System.err.println(e.getMessage()); System.exit(1); } catch (IOException e) { System.err.println(e.getMessage()); System.exit(1); } } } Latihan 12: /* package simplehttp; */ import java.io.*; import java.net.*; public class SimpleHttp { public static void main(String[] args) throws IOException { // TODO code application logic here
  14. 14. Praktikum Pemrograman Jaringan try { String host = "aguskurniawan.net"; int port = 80; Socket socket = new Socket(host,port); System.out.println("Kirim header"); // kirim header String path = "/book/testhalaman.html"; BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8")); wr.write("GET "+ path +" HTTP/1.0rn"); wr.write("Host: "+ host +"rn"); wr.write("rn"); wr.flush(); // Menunggu response System.out.println("Hasil Response:"); BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line; while ((line = rd.readLine()) != null) { System.out.println(line); } wr.close(); rd.close(); socket.close(); } catch (UnknownHostException e) { System.err.println(e.getMessage()); System.exit(1); } catch (IOException e) { System.err.println(e.getMessage()); System.exit(1); } } } Latihan 13: /* package simplehttpauthdemo; */ import java.io.*; import java.net.*; import org.apache.commons.codec.binary.*; public class SimpleHttpAuthDemo { public static void main(String[] args) { // TODO code application logic here try { System.out.println("Connecting..."); URL url = new URL("http://localhost:8022/test.html"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); // basic authentication String userpassword = "User1:!pass@word1"; byte[] bytesUserName =Base64.encodeBase64(userpassword.getBytes()); String encodedAuthorization = new String(bytesUserName); con.setRequestProperty("Authorization", "Basic "+ encodedAuthorization);
  15. 15. Praktikum Pemrograman Jaringan System.out.println("Server Respon:"); System.out.println(" Response Code: " + con.getResponseCode()); BufferedReader in = new BufferedReader( new InputStreamReader( con.getInputStream())); String line; System.out.println("Data Respon:"); while ((line = in.readLine()) != null) System.out.println(line); in.close(); con.disconnect(); } catch (UnknownHostException e) { System.err.println(e.getMessage()); System.exit(1); } catch (IOException e) { System.err.println(e.getMessage()); System.exit(1); } } } Latihan 14: /* package simplehttppost; */ import java.io.*; import java.net.*; public class SimpleHttpPost { public static void main(String[] args) { // TODO code application logic here try { // Kontruksi data String data = "__VIEWSTATE=%2FwEPDwUKMTU5MTA2ODYwOWRknm6e9vAwBiwK6VHieAu%2BMezs%2BjU%3D&__EVE NTVALIDATION=%2FwEWAwLo06OhBQLEhISFCwLCi9reA1smDvPQScCnGsHgE6G0j0tlx4UV&txtName =Agus+Kurniawan&btnSubmit=Submit"; // Initialisasi socket String host = "aguskurniawan.net"; int port = 80; Socket socket = new Socket(host,port); // Kirim header System.out.println("Kirim header"); String path = "/book/default.aspx"; BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8")); wr.write("POST "+ path +" HTTP/1.1rn"); wr.write("Host: "+ host +"rn"); wr.write("Content-Length: "+ data.length() +"rn"); wr.write("Content-Type: application/x-www-form-urlencodedrn"); wr.write("rn"); // kirim data System.out.println("Kirim data"); wr.write(data); wr.flush();
  16. 16. Praktikum Pemrograman Jaringan // Menunggu response System.out.println("Hasil Response:"); BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line; while ((line = rd.readLine()) != null) { System.out.println(line); } wr.close(); rd.close(); socket.close(); } catch (UnknownHostException e) { System.err.println(e.getMessage()); System.exit(1); } catch (IOException e) { System.err.println(e.getMessage()); System.exit(1); } } } Latihan 15: import java.net.*; class myAddress { public static void main (String args[]) { try { InetAddress address = InetAddress.getLocalHost(); System.out.println(address); }
  17. 17. Praktikum Pemrograman Jaringan catch (UnknownHostException e) { System.out.println("Could not find this computer's address."); }}} 3. Tugas Buatlah program seperti nslookup yang dapat memberikan informasi ip address dan nama host.
  18. 18. Praktikum Pemrograman Jaringan

×