life, coding, and stuff

20 October 2013

Brainstorming Game MGDW 5


Kami akhirnya rapat dan membahas game yang akan kami buat.

Awalnya, saya memberi saran kalau buat sebuah game yang kira-kira possible dibuat dalam waktu 1 bulan. (Deadline MGDW 5 bulan Desember).

Saya menyarankan membuat game platformer, karena banyak gampang dipahami, banyak tutorial dan  cukup seru untuk dimainkan.

Kami setuju, lalu kami mulai mencari tema / setting game kami.

Tak disangka, sudah hampir 2 jam berlalu, dan tak seorangun dari kami yang dapat ide mengenai tema gamenya, lalau tiba-tia salah seorang teman setim saya nyeletuk...

16 October 2013

MGDW 5


Beberapa hari yg lalu saya menemukan sebuah poster menempel di papan informasi jurusan saya. Poster itu menarik perhatian karena gambar dan desain yang mencolok dan berbeda dibandingkan poster lainnya. Seperti ini poster tersebut :



Saya langsung mengontak tim saya dan menyampaikan ide untuk ikut kompetisi ini sekalian untuk mengetes kemampuan tim kami sebelum menghadapi Imagine Cup.

Kami memutuskan untuk mendiskusikannya lagi akhir pekan ini

10 October 2013

Tim itu bernama Team Oxygen


Satu minggu sejak saya diajak untuk membuat game oleh teman saya.

Kami sudah memutuskan untuk menggunakan jangka waktu itu untuk mencari ide game yang mungkin nanatinya akan kami buat untuk ImagineCup.

Kami juga sudah punya tempat di Lab. Pengembangan Game (GameDev), namun dengan syarat harus bergantian dengan tim lain.

Saya hampir lupa tugas itu, dan saya datang pada pertemuan yang dijanjikan tanpa ide satupun dikepala.
Waktu dua teman saya datang ke Lab. GameDev, kami pun mulai membahas.

01 October 2013

Kembalinya dua kata yang sempat hilang



"Bikin Game".

Entah kapan terakhir kali saya merasa bergairah mendengar dua kata itu.

Sebelum ini, "bikin game" adalah  sesuatu yang mengingatkan saya akan kebodohan saya. Ke-ego-an saya. Cerita tentang seorang mahasiswa ambisius yang ingin membuat sesuatu yang luar biasa secara instan.

Saya terus terang merasa tidak enak mendengar dua kata tersebut. Tetapi memang, sejak semester lalu. "Bikin Game" telah menyebabkan saya membuat salah satu teman terbaik saya putus asa.

Setelah kami membuat tim beranggotakan dua orang, kami mulai membuat game untuk diikutkan berbagai kompetisi. Namun sayang, keberuntungan  tidak  belum berpihak pada kami. Tidak ada satupun dari karya yang kami buat menang, atau setidaknya lolos. Keputusasaan mulai melanda kami. Dan pada akhirnya rekan setim saya meninggalkan kegiatan ini. Sedangkan saya? well saya tidak terlalu mengerti. Antara saya belum menyerah atau terlalu naif.

Beberapa bulan sejak teman saya meninggalkan tim, saya hampir tidak melakukan hal apapun yang berhubugan dengan "bikin game", bahkan main game pun tidak. Saya mulai  meniggalkan kebiasaan nonton anime. Kemudian mulai berolahraga rutin setiap hari (yang mana jarang saya lakukan saat sedang aktif di tim). Dan yang terpenting, saya mulai mengejar ketertinggalan saya di akademik akibat kegiatan "bikib game" ini.

Yang tertanam di pikiran saya waktu itu hanya : "Jadi mahasiswa Teknik Informatika yang baik. Gak usah nglakuin yang aneh-aneh. Fokus akademik. Lulus jadi pegawai teladan. Orangtua senang. bla...bla..bla..."

Intinya, saya hampir tidak memikirkan lagi dengan apa yang namanya "bikin game".

Hingga hari itu datang.

18 September 2013

Reliving blog.




Setelah sekian lama blog saya tidak saya update, saya memutuskan ingin menghidupkannya kembali.

kali ini dengan tulisan yang berasal dari pemikiran saya.

Maksud saya, jika selama ini, blog ini saya isi karena disuruh senior untuk keperluan tugas di kampus, untuk selanjutnya akan berisi tulisan-tulisan yang murni ekspresi diri saya yang ingin saya bagikan kepada orang lain.

Sebisa mungkin akan saya update secara rutin (diluar kesibukan saya di kampus & proyek2 lain). Selain itu, content blog saya yang satunya (yang saya host di fc2.com) kemungkinan akan saya merge dengan yang di blogger ini.

Karena saya baru sadar, having a blog can give you many advantages in the future.

13 June 2013

Subnetting & Routing


Dalam mengkonfigurasi sebuah jaringan, dibutuhkan dua langkah, yaitu subnetting dan routing.
Subnetting adalah proses pemecahan sebuah jaringan menjadi beberapa jaringan kecil (subnet) agar dapat melakukan efisiensi penggunaan alamat ip dan iptables. Sedangkan routing adalah proses pengkonfigurasian sebuah router agar dapat mengenali host.

Misalnya, diberikan sebuah topologi dan kita diminta untuk menentukan alamat ip setiap host agar dapat saling terhubung dalam jaringan.


06 May 2013

Konfigurasi DNS di Linux


Diberikan sebuah topologi jaringan, kita diminta mengkonfigurasi DNS (Domain Name Sistem)-nya dengan soal seperti berikut:
1. Pertama, berilah nama pada komputer dan router sesuai dengan topolgi anda.
2. Dari topologi anda, buatlah hal-hal berikut ini:
a. Satu domain besar bernama klpxx.jarkom.com, yang ditangain oleh stitch (yang
tergabung dalam domain ini adalah selain woodstock & Snoopy)
Clue:
Setelah menginstall pada tempat diatas, sekarang masuk kedalam server Stitch yang
menangani domain besar bernama klpxx.jarkom.com.
/etc/b


11 April 2013

Membuat Web Server Sendiri dengan Java



Kita sudah tahu mengenai Apache yang merupakan web server paling populer. Namun, sebernarnya kita bisa membuat web server sederhana dengan meggunakan bahasa java.
Web server yang akan kita buat nantinya akan melakukan listening terus menerus sampai ada request di port 8080, kemudian akan menampilkan sebuah halaman web.

Pertama, import semua package yang diperlukan

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

Konfigurasi Proxy Server Squid



Jika Apache adalah web server yang paling banyak digunakan, maka squid adalah proxy server yang banyak digunakan.
Sama seperti apache, kelebihannya dalah banyaknya kustomsasi yang bisa kita lakukan pada proxy server ini.

Semua konfigurasi squid terletak di file /etc/squid3/squid.conf, maka dari itu, kita perlu mengedit file ini untuk kebutuhan konfigurasi.

Membatasi Kecepatan Download Per IP

Pertama, kita definisikan acl untuk IP yang ingin kita batasi. misal kita akan membatasi client dengan ip 192.168.1.2. Saya akan menamainya dengan host1.
acl adalah variable di squid untuk mendefinisikan aturan-aturan yang akan kita buat.

acl host1 src 192.168.1.2

buat delay pools. Delay pools menandakan jumlah aturan yang akan kita buat. Karena kita hanya akan membuat satu aturan, yaitu membatasi kecepatan download berdasarkan ip, maka :

delay_pools 1

kemudian kita buat delay class-nya. Delay class adalah aturan-aturan yang berkaitan dengan kecepatan suatu koneksi.

delay_class 1 1
delay_access 1 allow host1
delay_parameters 1 30000/30000

delay parameter adalah kecepatan maksimal suatu koneksi dalam byte. Dalam contoh saya ingin membatasi kecepatan download host1 sampai maksimal 30kbps (30.000 byte per second).

restart squid

Membatasi kecepatan Download berdasarkan Waktu

sama seperti berdasarkan ip, hanya saja acl yang kita buat adalah :

acl jamkerja time MTWHF 00:00-13.00

MWTHF adalah kode hari di mana :

M = Monday
T = Tuesday
W = Wednesday
H = Thursday
F = Friday
S = Saturday
A = Sunday

Jadi, parameter acl di atas akan membatasi kecepatan download apada hari senin-jumat pada mulai jam 00:00 samapai jam 13:00.

kemudian buat delay pools dan class nya

delay pools 1
delay_class 1 1
delay_access 1 allow jamkerja
delay_parameters 1 20000/20000 

restart squid.

Membatasi Kecepatan Download Berdasarkan Extensi File

sama seperti berdasarkan ip dan waktu, hanya saja acl yang kita buat adalah :

acl file1 url_regex -i \.pdf$\.mp3$\.doc$

Jadi, parameter acl di aas akan membatasi download file .pdf,.mp3,dan .doc.

kemudian buat delay pools dan class nya

delay pools 1
delay_class 1 1
delay_access 1 allow jamkerja
delay_parameters 1 40000/40000

restart squid.

Membatasi Jumlah Koneksi Maksimal

sama seperti berdasarkan ip, waktu, dan extensi file, hanya saja acl yang kita buat adalah :

acl limit maxconn 2

Jadi, parameter acl di atas akan membatasi jumah koneksi samapai maksimal 2.

kemudian buat delay pools dan class nya

delay pools 1
delay_class 1 1
delay_access 1 allow limit
delay_parameters 1 10000/10000 

restart squid.

10 April 2013

Konfigurasi Web Server Apache


Apache adalah salah satu web server populer yang banyak dipakai. Kelebihannya adalah banyaknya kustomisasi yang bisa kita lakukan agar apache dapat bekerja sesuai yang kita inginkan. Kali saya akan menunjukkan beberapa konfigurasi pada apache yang dapat kita lakukan.

Membuat Virtual Direktori

Biasanya, kita harus meletakkan halaman-halaman web kita di folder /var/www (jika di linux) atau /htdocs (jika di windows). Nah, ada trik dimana jika kita ingin meletakkan halaman web di luar folder-folder ini, atau istilahnya Virtual directory.

Pertama kita harus meng-enable modul mod_alias milik apache
LoadModule alias_module modules/mod_alias.so



Kemudian tambahkan konfigurasi berikut di .httpd.conf


# ADD THIS LINES FOR YOUR VIRTUAL DIRECTORIES Alias /project1 /home/me/web/project1 Alias /project2 /home/me/web/project2 Alias /project3 /home/me/web/project3

dalam contoh, saya membuat virtual directory bernama /project1 dimana sebenarnya letak project1 ini ada di /home/me/project1

Lalu tambahkan baris berikut untuk setiap virtual direktori:

# SETTING DIRECTORY FOR /home/me/web/project1

Options None
AllowOverride All
Order allow,deny
Allow from all


Kita harus membuat lebih dari satu konfigurasi untuk setiap virtual direktori yang kita buat seperti di atas. Kemudian Restart Apache.

Hosting lebih dari satu website

Apache dapat meng-host lebih dari satu website. Metode ini bisa dilakukan dengan melakukan setting yang disebut "virtual host" di Apache.

di folder /etc/apache2/sites-available/ ada sebuah file bernama "default". Gunakan file ini sebagai template untuk file virtual host. Untuk melakukannya cukup copy file-nya, dan rename dengan nama lain. contoh :
cp default djmadjack.com
kemudian edit file yang baru kta copy tersebut menggunakan text editor


nano djmadjack.com
kemudian tambahkan baris berikut :


      ServerAdmin eric@djmadjack.com
      ServerName www.djmadjack.com
      DocumentRoot /var/www/djmadjack.com/
      
              Options FollowSymLinks
              AllowOverride None
      
      
              Options Indexes FollowSymLinks MultiViews
              AllowOverride None
              Order allow,deny
              allow from all
      

 (...)

Baris DocumentRoot adalah letak di mana halaman web kita akan disimpan.

Kemudian kita perlu meng-enable website baru kita.

a2ensite djmadjack.com
Jika sewaktu-waktu kita perlu men-disable, gunakan

a2dissite djmadjack.com

Terakhir, restart apache.

Direktori Halaman Web per User

Secara default, letak halaman web apache adalh di /var/www. Ada kalanya kuta ingin membuat agar setiap user di komputer memiliki folder web nya sendiri-sendiri, jadi nantinya website kita bisa diakses lewat url : http://example.com/~namauser/
Pertama, kita perlu meng-enable modul mod_userdir di apache

sudo a2enmod userdir


Lalu lakukan konfigurasi di file userdir.conf

gksudo gedit /etc/apache2/mods-enabled/userdir.conf

Kemudian ganti dengan baris berikut :

<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root
 
        <Directory /home/*/public_html>
  AllowOverride All
  Options MultiViews Indexes SymLinksIfOwnerMatch
  <Limit GET POST OPTIONS>
          Order allow,deny
          Allow from all
  </Limit>
  <LimitExcept GET POST OPTIONS>
          Order deny,allow
          Deny from all
  </LimitExcept>
        </Directory>
</IfModule>


Restart apache.

Dengan ini, setiap user dapat memiliki folder web nya di folder public_html di home foldernya masing-masing. Url nya dapat diakses melalui : http://127.0.0.1/~namauser/.

Disable Directory Listing

Secara default, apache akan memperlihatkan direktori jika tidak dapat menemukan file index.html atau index.php. Untuk alasan keamanan, kita mungkin ingin mendisable hal ini.

Pertama, buka file .httpd.conf

Cari baris berikut

Options Includes Indexes FollowSymLinks MultiViews

Kemudian hapus tulisan Indexes menjadi :

Options Includes FollowSymLinks MultiViews

Restart apache.

Melindungi Direktori dengan Password

Kita dapat melindungi sebuah direktori agar tidak dapat diakses orang yang tidak berhak. Caranya dengan menggunakan file .htaccess

Pertama buat file bernama .htacess di direktori yang ingin kita lindungi. Isi dengan baris berikut :


AuthName "Section Name"
    AuthType Basic
    AuthUserFile /home/username/.htpasswds
    Require valid-user 


baris /home/username/,htpasswds merupakan lokasi file yang berisi username dan password kita.
Buatlah file tersebut.

Kemudian buka situs berikut, isi username dan password anda pada form yang sesuai, kemudian klik create password. maka password akan dienkripsi.

kemudian isi file .htpasswds kita dengan username dan password yang kita dapat dari situs barusan.


username:password


Restart apache.

Nah sekarang, direktori kita sudah terlindungi. Jika user membuka direktori ini lewat web browser, sebuah dialog box akan muncul dan menanyakan username dan password sebelum kita dapat mengaksesnya. Atau alternatifya kita bisa membukanya lewat :

http://username:password@www.website.com/directory/ 
    
Konfigueasi SSL

Ada kalanya kita ingin melindungi website kita dengan SSL untuk alasan keamanan.  Untuk kasus self-signed certificate, kita bisa melakukan langkah berikut :

Pertama, enable SSL di Apache 

sudo a2enmod ssl

Generate file CSR

sudo openssl req -new > new.ssl.csr

Masukkan passphrase, ingat baik-baik, karen akita akan ditanya lagi di langkah berikutnya.

Kemudian kita akan diberikan serangkaian pertanyaan :

Generating a 1024 bit RSA private key
................++++++
........................++++++
writing new private key to 'privkey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:Masukkan kode Negara
State or Province Name (full name) [Some-State]:Masukkan nama Provinsi
Locality Name (eg, city) []:Masukkan nama kota
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Masukkan nama instansi 
Organizational Unit Name (eg, section) []:Masukkan nama unit di institusi anda
Common Name (eg, YOUR name) []:Nama lengkap anda
Email Address []:Email anda

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:Kosongi
An optional company name []:Opsional

Kemudian generate certificate nya

sudo openssl rsa -in privkey.pem -out new.cert.key
sudo openssl x509 -in new.ssl.csr -out new.cert.cert -req -signkey new.cert.key -days NNN
sudo cp new.cert.cert /etc/ssl/certs/server.crt
sudo cp new.cert.key /etc/ssl/private/server.key

Ganti NNN dengan jumlah hari certificate ini akan berlaku sebelum expired.

Kemudian lakukan konfigurasi di file situs anda yang ada di sites-available. Contohnya, saya di : /etc/apache2/sites-available/mydomain.net:

NameVirtualHost *:443
NameVirtualHost *:80


    ServerAdmin email address here
    ServerName mydomain.net
    ServerAlias www.mydomain.net
    DocumentRoot /srv/www/mydomain.net/public_html/
    ErrorLog /srv/www/mydomain.net/logs/error.log
    CustomLog /srv/www/mydomain.net/logs/access.log combined



    ServerAdmin 
 jzb@zonker.net
    ServerName mydomain.net
    ServerAlias www.mydomain.net
    DocumentRoot /srv/www/mydomain.net/public_html/

    ErrorLog /srv/www/mydomain.net/logs/error.log
    CustomLog /srv/www/mydomain.net/logs/access.log combined

    SSLEngine on
    SSLOptions +StrictRequire
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key

Enable situs anda 

sudo a2ensite mydomain.net

Restart apache.

Nah, sekarang kita bisa membuka situs kita dengan protokol https://www.example.com

11 March 2013

Review Materi Asistensi Jaringan Komputer


OSI Layer

OSI (Open System Interconnection) adalah penggambaran bagaimana informasi dari suatu aplikasi berpindah melewati sebuah media jaringan ke suatu aplikasi di komputer lain.

OSI layer dibagi menjadi 7 lapisan. Urutan dari yang paling bawah ( Yang mengendalikan transport data) sampai yang paling atas (Yang berurusan dengan aplikasi pada umumnya) adalah sebagai berikut :

Physical
Lapisan ini bertanggung jawab untuk mengaktifkan dan mengatur interface jaringan komputer yang berbentuk fisik. Seperti Kabel, Hub, Router, dll.

Data Link
Lapisan ini mengatur topologi jaringan, peringatan error, dan pengaturan aliran data. Tugas utamanya adlah sebagai fasilitas pengiriman data yang masih mentah dan mengubahnya ke saluran yang bebas dari gangguan.

Network
Lapisan ini berfungsi untuk mengendalikan operasi subnet dengan meneruskan paket-paket dari suatu node ke node lain dalam jaringan.

Transport
Fungsi dasar dari Lapisan Transport adalah menerima data dari lapisan session, memecah data menjadi bagian-bagian yang lebih kecil bila perlu, meneruskan data ke lapisan Network, dan menjamin bahwa semua potongan data tersebut bisa tiba di sisi lainnya dengan benar.

Session
Lapisan Session mengijinkan pengguna untuk menetapkan session dengan pengguna lainnya. Lapisan ini membuka, mengatur, dan menutup suatu session antara aplikasi satu dengan lainnya.

Presentation
Lapisan ini melakukan fungsi-fungsi seperti konversi, format, dan enkripsi data.

Application
Lapisan ini bertugas memberikan sarana pelayanan langsung ke user, yang berupa aplikasi-aplikasi dan mengadakan komunikasi dari program ke program. Jika kita mencari suatu file dari file server untuk digunakan sebagai aplikasi word processor, maka proses ini bekerja melalui layer ini. Demikian pula ketika kita mengirimkan e-mail, browsing internet, chatting, membuka telnet, atau menjalankan FTP Client, proses-proses tersebut dilakukan di layer ini.


Protokol Dalam Email

SMTP (Simple Mail Protocol)
Protokol umum yang digunakan untuk mengirimkan email dari satu komputer ke komputer lain.

POP3 (Post Office Protokol v3)
Jika kita menggunkan protokol ini, email akan didownload ke local disk dan kita bisa membacanya secara offline. Kita tidak bisa membaca email terdahulu jika email yang kita download terhapus.

IMAP (Internet Message Acces Protocol)
Jika kita menggunakan protokol ini, kita bisa membaca email dari banyak account. Email akan dibaca langsung dari Server, dan mensinkronisasikannya dengan aplikasi yang menggunakan protokol ini. Semua perubahan terhadap keduanya akan disimpan


Menggunakan FileZilla FTP Client



FileZilla adalah sebuah FTP client. Dengan FileZilla, kita dapat mengorganisir dan mensinkronisasi file kita di local disk dan di remote server secara mudah dan efisien.
Hal pertama yang perlu dilakukan adalah konek ke server.
Dalam contoh, akan dipakai data berikut

Hostname: example.org
Username: john
Password: 7PjU#.J3


Masukkan data-data tersebut di field yang telah tersedia di Quickconnect bar untuk memuat koneksi baru.
Masukkan nama host di bagian host, username di Username, begitu pula dengan Password. Kita bisa meninggalkan field Port, kecuali informasi login kita menggunakan port yang spesifik. Kemudian klik Quickconnect. FileZilla akan mencoba untuk berkomunikasi dengan server. Jika berhasil, kita akan diberitahu di bagian kolom sebelah kana, dari bertuliskan Not coneccted to any server menjadi menampilkan daftar file dan direktori.

Bagian-bagian dalam FileZilla adalah sebagai berikut :




  1.  Toolbar
  2. Quickconnect bar
  3. Message Log, berfungsi untuk menampilkan pesan yang berhubungan dengan koneksi dan transfer.
  4. Local Panel, menampilkan file dan direktori yang ada di komputer kita
  5. Server Panel, menampilkan file dan direktori komputer server yang sedang kita konek.
  6. Daftar file yang akan di-transfer dan yang sudah di-transfer.


Upload

Pertama, di local panel, masuk ke direktori tempat file yang akan kita transfer. Kemudian, Buka direktori server yang akan kita tuju untuk upload di bagian server panel. Untuk mengupload, kita tinggal drag-and-drop file dari local panel ke server panel. Kita bisa melihat daftar file yang sedang kita upload di bagian bawah aplikasi. Jika berhasil, file yang baru kita transfer akan terlohat di server panel.

Download

Untuk mendownload file, atau direktori, caranya sama seperti upload. Kita cukup men-drag-and-drop file/direktori tersebut dari server panel ke local panel kali ini. 

Socket Programming di Java



Kali ini akan saya tampilkan tutorial pemrograman socket menggunakan bahasa java.
Ada dua program yang berjalan di dua komputer berbeda, dan akan saling bertukar pesan “Hello World”.

Client.java
Pertama kita import header yang diperlukan

package clientsocket;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;

Di bawah deklarasi kelas, buatlah sebuah blok exception, lalu kita buat sebuah variabel yang akan kita gunakan untuk menyimpan string yang akan kita kirim ke Server. Dalam contoh adalah “Hello World!”

public class ClientSocket {
    public static void main(String[] args) {
        try {           
            String myrespon = "Hello World!\r\n";

Lalu buat sebuah variabel bertipe Socket. Lalu isiskan alamat ip dan port yang akan kita gunakan.           
            Socket s = new Socket("10.151.43.185", 5136);

Kemudian buat dua variabel bertipe InputStream dan OutputStream. InputStream berfungsi sebagai penerima data yang dikirimkan dari komputer lain, sedangkan OutputStream berfungsi sebagai pengirim pesan ke komputer lain.

            InputStream is = s.getInputStream();
            OutputStream os = s.getOutputStream()    

Fungsi berikut akan membuat OutputStream yang telah kita buat untuk mengirimkan variabel pesan kita. OutputStream hanya menerima data bertipe bytes, jadi kita gunakan  method getBytes() untuk mengubah string menjadi bytes.

            os.write(myrespon.getBytes());
           
Selanjutnya kita buat sebuah integer yang akan digunakan sebagai penerjemah pesan dari server. Lalu buat sebuah loop yang ketika berjalan, ia akan membaca data dari InputStream dan menyimpannya dalam integer yang selanjutnya akan diubah menjadi char dan langsung ditampilkan ke layar. Jika integer yang telah diubah ke char tersebut bernilai “\n”, maka loop akan dihentikan.

            int c;    
            while(true)
            {
                c = is.read();
                System.out.print((char)c);
                if((char)c == '\n') break;
            }

Kemudian kita tutup semua Stream yang telah kita buat dan soket itu sendiri.
            os.close();
            is.close();
            s.close();

Terakhir, kita buat penutup dari exception yang telah kita buat di atas.
        } catch (UnknownHostException ex) {
            Logger.getLogger(ClientSocket.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(ClientSocket.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}



Server.java

Seperti biasa, kita import terlebih dulu header yang diperlukan

package socketserver;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;

Sebenarnya, program server tidak jauh beda dari client, bedanya, jika client adalah pihak yang meminta koneksi, maka server adalah pihak yang menyetujui koneksi.  Maka kita buat lagi variabel bertipe socket dan satu lagi variabel baru bertipe ServerSocket.

public class SocketServer {
    public static void main(String[] args) {
        try {
            Socket s = new Socket("10.151.34.185",5136);
            ServerSocket ss = new ServerSocket(5136);

 Fungsi di bawah akan membuat socket yang telah kita buat untuk disetujui oleh ServerSocket yang kita buat.           
            s = ss.accept();

Seperti client, kita juga buat dua buah Stream untuk input dan output, dan pesan kita.

            InputStream is = s.getInputStream();
            OutputStream os = s.getOutputStream();
            String respon = "Hello World!\r\n";

Kita juga buat sebuah loop yang akan memeriksa pesan masuk dari client

            int c;
            while(true)
            {
                c = is.read();
                System.out.print((char)c);
                if((char)c == '\n')
                    break;
            }
           
Terakhir kita kirim pesan respon server kembali ke client. Tambahkan flush untuk merefresh stream kita.

            os.write(respon.getBytes());
            os.flush();

Tutup Semua stream dan socket

            os.close();
            is.close();
            s.close();
            ss.close();
           
Dan terakhir, tutup exception yang kita buat

        } catch (IOException ex) {
            Logger.getLogger(SocketServer.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Capture Paket dengan Wireshark


Wireshark adalah sebuah tool analisis jaringan yang dapat meng-“capture” paket secara real-time dan menampilkannya dalam format yang dapat kita baca. Wireshark juga dapat mem-filter, color-coding dan fitur lain yang dapat kita gali lebih jauh untuk memeriksa paket-paket yang ada di dalam jaringan
Tutorial ini akan menjelaskan bagaimana dasar capture sebuah paket dengan wireshark, mem-filternya dan memeriksanya. Kita dapat memakai Wireshark untuk memeriksa paket yang mencurigakan, menganalisis aliran trafik  di dalam jaringan dan belajar tentang berbagai protokol komunikasi di internet.
Anda dapat mendownload Wireshark di  wireshark.org

1.    Jalankan Wireshark. Pilih “Capture” dan klik “interfaces” dari toolbar.



2.    Jika ada beberapa interface yang berbeda, tentukan mana yang sedang aktif. Interface yang aktif punya alamat IP yang tertera dan punya beberapa paket yang aktif. Jumlah interface yang terlihat bervariasi, tergantung apakah kita memakai ethernet, Wi-Fi atau keduanya.



3.    Setelah kita menentukan mana interface yang aktif, klik tombol “Start” di toolbar yang sama. Lihatlah, Di bagian jendela utama, Wireshark akan menampilkan berbagai paket yang ada di jaringan. Jika dalam beberapa detik kita tidak melihat paket apapun, berarti kita memilih interface yang salah atau kita tidak punya koneksi network yang aktif.

4.    Saat kita sudah selesai meng-“capture” paket, kita dapat menghentikan aktivitas Wireshark dengan meng-klik “X” merah di bagian kiri atas.

5.    Kita dapat mem-filter melalui paket yang telah kita “capture” dan dapat melihat informasinya. Filter dapat dipakai untuk mencari paket dengan kategori dan protokol tertentu. Di kotak pencarian “Filter”, ketikkan tipe protokol yang ingin kita analisis, seperti TCP, HTTP, atau UDP. Kemudian tekan “Enter”. Kita dapat mengurutkannya lewat layer yang berbeda (Data, UDP, IP, dan lain-lain) untuk mengakses informasi tertentu yang mungkin kita butuhkan seperti misalnya besar paket dan informasi lain.



6.    Untuk melihat informasi paket yang telah kita “Capture” klik salah satu dari daftar paket, kemudian lihat di jendela di bagian bawah jendela daftar paket. Kita dapat melihat informasi spesifik mengenai paket yang telah kita tangkap.

Popular Posts