Anda di halaman 1dari 78

PROYEK AKHIR

PEMBUATAN SOFTWARE TELEPHONY MENGGUNAKAN JAVA MEDIA FRAMEWORK

Oleh : MUHAMMAD FARID GHOZI NRP. 7207 030 009

Dosen Pembimbing : Mike Yuliana, ST, MT NIP. 132 300 242 Achmad Subhan KH., ST NIP. 197701202008011010

JURUSAN TEKNIK TELEKOMUNIKASI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA INSTITUT TEKNOLOGI SEPULUH NOPEMBER SURABAYA 2010 1 -12 PROYEK AKHIR

PEMBUATAN SOFTWARE TELEPHONY MENGGUNAKAN JAVA MEDIA FRAMEWORK

Oleh : MUHAMMAD FARID GHOZI NRP. 7207 030 009

Dosen Pembimbing : Mike Yuliana, ST, MT NIP. 132 300 242 Achmad Subhan KH., ST NIP. 197701202008011010

JURUSAN TEKNIK TELEKOMUNIKASI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA INSTITUT TEKNOLOGI SEPULUH NOPEMBER SURABAYA 2010

-2-

PEMBUATAN SOFTWARE TELEPHONY MENGGUNAKAN JAVA MEDIA FRAMEWORK (JMF) Oleh: MUHAMMAD FARID GHOZI 7207.030.009 Proyek Akhir ini Diajukan Sebagai Salah Satu Syarat Untuk Memperoleh Gelar Ahli Madya (A.Md.) di Politeknik Elektronika Negeri Surabaya Institut Teknologi Sepuluh Nopember Surabaya Surabaya, Juli 2010 Disetujui oleh :

Tim Penguji : 1. Ir. Anang Budikarso, MT NIP. 19630508 198803 1 003 2. M. Hasbi Assidiqi, S.Kom NIP. 2000000018 0 3. Hestiasari Rante,ST,M.Sc NIP. 19760715 200812 2 001

Dosen Pembimbing : 1. Mike Yuliana, ST, MT NIP. 132 300 242 2. Achmad Subhan K.H, ST NIP. 19770120 200801 1 01

Mengetahui, Ketua Jurusan Teknik Telekomunikasi Arifin, ST, MT NIP. 19600503 199203 1 004 ii

-3-

ABSTRAK Perkembangan teknologi telekomunikasi yang semakin pesat, khususnya telepon yang semakin lama semakin ditinggalkan orang. Karena terbatasnya fasilitas yang diberikan oleh telepon kabel yang hanya bisa mengirim informasi berupa suara saja.Perkembangan Internet akhir-akhir ini ini telah membuat Internet menjadi begitu besar peranannya baik sebagai sarana memperoleh informasi dengan cepat dan selalu diperbaharui. Setelah pertukaran informasi dilakukan dengan pengiriman dan penerimaan elektronik mail maka pada saat ini mulai bergerak ke arah pengiriman informasi yang memungkinkan dapat terselenggaranya sebuah komunikasi berbasis multimedia. Pada tugas akhir ini dibuat sebuah software telephony yang mempunyai fungsi seperti telepon. Perbedaannya software ini memanfaatkan sebuah jaringan internet sebagai media pengiriman data. Dari hasil pengujian, didapatkan bahwa software dapat bekerja secara real time. Seperti yang diharapkan. Kata kunci: Java Media Framework, Real Time

iii

-4-

ABSTRACT Development of the Internet these days has made the Internet become so large role both as a means to obtain information quickly and always updated. After the exchange of information is done by sending and receiving electronic mail is currently moving toward the transmission of information which could enable the implementation of a multimedia-based communications. Java Media Framework is the interface of multimedia applications. One form of multimedia that can be operated with a webcam and JMF microphone. With using RTP (Real Time Protocol), the Java Media Framework can be applied in a network with a media transfer data obtained from the webcam and microphone. Telephony application program with the Java Media Framework is built with RTCP (Real Time Control Protocol) to obtain the time delay for a single shipment SR (Sender Report). The results have been achieved in this final project is terbuatnya a telephony software which has the function of such telephone. The difference this software utilizing the Internet as a medium of a network data transmission Keywords: Java Media Framework, Real Time

iv

-5-

KATA PENGANTAR Dengan mengucapkan Puji Syukur kehadirat Allah SWT yang telah melimpahkan rahmat, hidayah serta karunia-Nya yang tiada henti sehingga penyusun dapat menyelesaikan Tugas Akhir yang berjudul : PEMBUATAN SOFTWARE APLIKASI TELEPHONY MENGGUNAKAN JAVA MEDIA FRAMEWORK (JMF) Proyek akhir ini diselesaikan dengan berpegang pada teori yang pernah didapatkan, serta bimbingan dari dosen pembimbing proyek akhir. Serta pihak-pihak lain yang sangat membantu hingga sampai terselesaikannya proyek akhir ini. Proyek akhir ini digunakan sebagai salah satu syarat akademis untuk memperoleh gelar Ahli Madya (A.Md) di Politeknik Elektronika Negeri Surabaya, Institut Teknologi Sepuluh Nopember Surabaya. Penyusun juga mengucapkan terima kasih yang sebesarbesarnya kepada semua pihak yang telah menjadi bagian atas penyelesaian buku Proyek Akhir ini. Penyusun menyadari bahwa masih banyak kekurangan dalam perencanaan dan pembuatan buku proyek akhir ini. Oleh karena itu besar harapan untuk menerima saran dan kritik dari para pembaca. Dan semoga buku ini dapat memberikan manfaat bagi para mahasiswa Politeknik Elektronika Negeri Surabaya pada umumnya dan dapat memberikan nilai lebih untuk para pembaca pada khususnya.

Surabaya, Jan 2010

Penyusun v

-6-

UCAPAN TERIMA KASIH Syukur kehadirat Allah SWT atas segala nikmat yang telah dilimpahkan. Kami menyadari bahwa terwujudnya Proyek Akhir ini tidak terlepas dari bantuan, bimbingan, doa serta dukungan dari berbagai pihak. Dengan segala ketulusan, keikhlasan, dan kerendahan hati, kami ingin menyampaikan rasa terima kasih dan penghargaan yang sebesarbesarnya kepada: 1. Allah SWT, atas segala nikmat yang telah diberi dan atas segala berkah serta rahmat-Nya sehingga penulis dapat menyelesaikan Proyek Akhir ini dengan baik. 2. Bu Mike dan Bpk Achmad Subhan Kh , selaku dosen pembimbing, terima kasih atas segala bantuan dan bimbingan yang telah diberikan. 3. Kedua Orang Tua, atas segala dukungan baik moril ataupun materiil, rasanya ucapan terima kasih saja tidak cukup membalas semua yang Ayah dan Ibu berikan. 4. Seluruh Dosen Penguji atas segala saran dan masukan yang berguna. 5. Semua keluarga besar yang tidak bisa saya sebutkan satupersatu. 6. Teman-teman koplakers D3 TA, selama 3 tahun banyak sekali suka duka yang kita alami bersama, semoga tali silahturahmi kita akan terus terjalin hingga nanti. 7. Seluruh Dosen Telkom dan para Asisten Dosen, terima kasih atas ilmu yang telah dibagikan kepada kami. 8. Seluruh Pihak yang tidak bisa saya sebut satu per satu.

vi

-7-

DAFTAR ISI HALAMAN JUDUL .................................................................. .. i LEMBAR PENGESAHAN .......................................................... ii

ABSTRAK ........................................................................ ............ iii ABSTRACT ....................................................................... .......... iv KATA PENGANTAR ................................................................. . v UCAPAN TERIMA KASIH ........................................................ v i DAFTAR ISI ..................................................................... ........... vii DAFTAR GAMBAR .................................................................. .. viii DAFTAR TABEL ................................................................... ..... x BAB I PENDAHULUAN ............................................................. 1 1.1 LATAR BELAKANG ............................................................. . 1 1.2 RUMUSAN MASALAH ......................................................... 1 1.3 BATASAN MASALAH .......................................................... 1 1.4 TUJUAN DAN MANFAAT .................................................... 2 1.5 METODOLOGI ................................................................. ...... 2 1.5.1 Studi Literatur ..................................................... ............. 2 1.5.2 Perancangan Sistem .................................................. ........ 2 1.5.3 Implementasi dan Pengujian Sistem .................................. 2 1.5.4 Analisa dan Kesimpulan .............................................. ..... 3 1.6 SISTEMATIKA PENULISAN................................................. 3 BAB II PERENCANAAN SISTEM DAN TEORI PENUNJANG 5 2.1 BAHAN DAN ALAT ............................................................. . 5 2.1.1 Perencanaan Jaringan ................................................ ....... 5 2.1.2 Perencanaan Perangkat Lunak ......................................... . 5 2.2 CARA KERJA ................................................................. ........ 8 2.2.1 Blok Diagram Sistem.................................................. ...... 8 2.2.2 Flowchart Sistem .................................................... .......... 9 2.2.3 Persiapan ........................................................... ............... 10 2.2.4 Perencanaan Jaringan ................................................ ....... 11 2.3 TEMPAT DAN WAKTU PENELITIAN ................................. 12 2.3.1 Tempat Penelitian .................................................... ........ 12 2.3.2 Waktu Penelitian ..................................................... ......... 12 2.4 METODE ANALISA DAN PENGUMPULAN DATA ............ 12

2.5 Teori Penunjang ............................................................ ........... 12 BAB III PEMBUATAN DAN ANALISA SISTEM .................... 21 3.1 Pembuatan Sistem ........................................................... ......... 21 3.1.1 Perangkat Keras (Hardware) ........................................... . 21 3.1.2 Pembuatan Chatting Server ............................................ .. 21 vii

-8-

3.1.3 Pembuatan JMF Server ................................................. ... 44 3.2 Pengujian Sistem dan Analisa ............................................... ... 51 3.2.1 Pengujian Delay dan Througput dari JMF ........................ 51 3.2.2 Pengujian Waktu Untuk Eksekusi Program ...................... 53 3.2.4 Pengujian Tanpa Thread dan Dengan Thread ................... 58 3.2.5 Pengujian Untuk Nicname .............................................. .. 59 3.2.6 Keberhasilan Sistem Room.............................................. . 57 BAB IV PENUTUP ................................................................. ..... 63 DAFTAR PUSTAKA ................................................................. .. 65 LAMPIRAN ....................................................................... .......... 67 RIWAYAT HIDUP .................................................................. .... 75

viii

-9-

DAFTAR GAMBAR Gambar 2.1 ... 8 Gambar 2.2 Gambar 2.3 Gambar 2.4 .. 11 Gambar 2.5 Gambar 3.1 22 Gambar 3.2 23 Gambar 3.3 Gambar Gambar Gambar Gambar Gambar Gambar Gambar Gambar Gambar Gambar 44 Gambar 7 Gambar 50 Gambar 50 Gambar 52 Gambar Editor Netbeans 6.5 ................................................. Blok Diagram Perencanaan Sistem ............................. 8 Flowchart Sistem pada Sisi Client dan Server ............. 10 Perencanaan Jaringan ................................................ Posisi J2SE pada Arsitektur Java2 Platform ................ 13 Flowchart Tampilan Client.......................................... Flowchart Tampilan Server ......................................... Memilih Project yang akan dibuat ............................... 24

3.4 Tampilan Dialog untuk Memberi Nama Project .......... 25 3.5 Dialog untuk Memilih New Package ........................... 25 3.6 Tampilan Dialog untuk Memberi Nama Package ........ 26 3.7 Tampilan Pada saat Membuat class ............................. 27 3.8 Tampilan Program Chat Sebelum Terkoneksi ............. 40 3.9 Tampilan program Ketika Sudah Terhubung ............... 41 3.10 Tampilan ketika ada dua client yang terhubung ......... 42 3.11 Tampilan dialog private message .............................. 42 3.12 Tampilan Client Untuk Private Message ................... 43 3.13 Tampilan Program Server ......................................... 3.14 Flowchart Pengiriman Data ...................................... 3.15 Tampilan pada penerima ........................................... 3.16 Flowchart Penerima Data.......................................... 3.17 Grafik pengukuran delay ........................................... 3.18 Grafik pengukuran throughput .................................. 54 53 4

Gambar 3.19 Grafik pengukuran waktu eksekusi program.............. Gambar Gambar Gambar Gambar Gambar 3.20 3.21 3.22 3.23 3.24 Grafik pengukuran Grafik pengukuran Grafik pengukuran Grafik pengukuran Keberhasilan Dari waktu eksekusi program .............. 55 waktu eksekusi program .............. 56 waktu eksekusi program .............. 57 waktu eksekusi program .............. 58 Sistem room .................................

61

Gambar 3.25 Tampilan Untuk Private Message .............................

62

ix

-10-

DAFTAR TABEL Tabel 3.1 pengukuran delay ..................................................... ...... 52 Tabel 3.2 Pengukuran throughput ................................................ ... 53 Tabel 3.3 Waktu Eksekusi Yang Dibutuhkan Untuk 1 Client ......... 54 Tabel 3.4 Waktu Eksekusi Yang Dibutuhkan Untuk 2 Client ......... 55 Tabel 3.5 Waktu Eksekusi Yang Dibutuhkan Untuk 3 Client ......... 56 Tabel 3.6 Waktu Eksekusi Yang Dibutuhkan Untuk 4 Client ......... 57 Tabel 3.7 Waktu Eksekusi Yang Dibutuhkan Untuk 5 Client ......... 58 Tabel 3.8 Pengujian Tanpa Thread ............................................... .. 59 Tabel 3.9 Pengujian Dengan Thread .............................................. . 59 Tabel 3.10 Pengujian Nickname .................................................. ... 60

-11-

BAB I PENDAHULUAN 1.1 LATAR BELAKANG Perkembangan teknologi telekomunikasi yang semakin pesat, khususnya telepon yang semakin lama semakin ditinggalkan orang. Karena terbatasnya fasilitas yang diberikan oleh telepon kabel yang hanya bisa mengirim informasi berupa suara saja. Perkembangan Internet akhir-akhir ini ini telah membuat Internet menjadi begitu besar peranannya baik sebagai sarana memperoleh informasi dengan cepat dan selalu diperbaharui. Setelah pertukaran informasi dilakukan dengan pengiriman dan penerimaan elektronik mail maka pada saat ini mulai bergerak ke arah pengiriman informasi yang memungkinkan dapat terselenggaranya sebuah komunikasi berbasis multimedia. Java Media Framework merupakan interface aplikasi multimedia yang dapat bekerja baik pada Microsoft windows maupun UNIX sehingga dalam penerapannya tidak memerlukan penyesuaian yang begitu banyak untuk dapat dioperasikan pada latform-platform tersebut. Salah satu bentuk multimedia yang dapat dioperasikan dengan JMF adalah webcam dan mikropon. 1.2 RUMUSAN MASALAH Permasalahan yang dijadikan objek pengembangan proyek akhir ini yaitu : a. Bagaimana membuat suatu aplikasi telephony dengan menggunakan JMF. b. Bagaimana membuat sebuah server JMF untuk multiclient. c. Bagaimana mengelola sinyal suara dan gambar sehingga dapat dikirimkan melalui jaringan internet. 1.3 BATASAN MASALAH Untuk menghindari meluasnya materi pembahasan proyek akhir ini, maka penulis membatasi perangkat lunak yang dikembangkan hanya dengan mencakup hal-hal berikut : 1

-12-

a. Bahasa pemrograman yang digunakan adalah bahasa pemrograman java. b. Pengolahan sinyal suara dan video menggunakan JMF. c. Pembuatan komunikasi server dengan beberpa client menggunakan socket programming berbasis protokol UDP. 1.4 TUJUAN DAN MANFAAT Membuat aplikasi telephony dengan menggunakan JMF sehingga bisa dilakukan streamming audio dan video dari beberapa client melalui sebuah server. 1.5 METODOLOGI Untuk membuat aplikasi telephony dengan bahasa pemrograman Java dibutuhkan langkah-langkah sebagai berikut : 1.5.1 Studi Literatur Pemahaman tentang socket programming berbasis TCP konsep thread pada JMF. 1.5.2 Perancangan Sistem Perancangan sistem meliputi perancangan jaringan dan perangkat lunak. Perancangan jaringan tersusun dari beberapa Client dan sebuah Server. Sedangkan perancangan perangkat lunak terdiri dari perancangan tampilan dari aplikasi yang akan dibuat untuk dieksekusi oleh user, dan pilihan menu atau option yang akan dibutuhkan dalam menjalankan aplikasi ini. 1.5.3 Implementasi dan Pengujian Sistem Program aplikasi yang telah dihasilkan melalui perancangan sistem tersebut, selanjutnya diimplementasikan pada PC untuk melakukan koneksi socket. Selain itu, pada tahap ini juga menjelaskan langkah-langkah yang dilakukan saat mengeksekusi program dan pengujian terhadap program

-13-

aplikasi tersebut. Pengujian ini bertujuan untuk mengetahui apakah program yang telah dibuat telah menghasilkan

tampilan dan kinerja yang sesuai dengan apa yang diinginkan atau belum. Pengujian ini juga diharapkan agar sistem dapat berjalan secara keseluruhan baik untuk melakukan suatu pengukuran parameter maupun pengambilan data. 1.5.4 Analisa dan Kesimpulan Menganalisa dan menyimpulkan hasil-hasil dari pengujian dan pengukuran pada perangkat keras dan lunak, serta memberi saran bila proyek ini akan dikembangkan kembali pada masa mendatang. 1.6 SISTEMATIKA PENULISAN Buku laporan proyek akhir ini tersusun atas beberapa bab penulisan. Sistematika penulisan adalah sebagai berikut : BAB I Pendahuluan Menguraikan secara singkat dan jelas tentang latar belakang, tujuan, rumusan masalah, batasan masalah, metodologi dan sistematika penulisan pada buku laporan Proyek Akhir ini. BAB II Perencanaan Sistem dan Teori Penunjang Bab ini menjelaskan gambaran tentang tahapan-tahapan perencanaan sistem yang meliputi beberapa hal, yaitu perencanaan jaringan aplikasi pada server dan client, serta merencanakan flowchart untuk system aplikasi ini sebagai persiapan dalam proses pembuatan perangkat lunak. Dan juga memberikan dasar teori yang dapat menunjang dalam mengerjakan proyek ini. Sebagian teori dasar yang diberikan terutama mengenai : teknologi J2SE (Java 2 Standard Edition), Socket Programming menggunakan java socket, JMF, dan thread.

-144

BAB III Pembuatan Sistem, Pengujian, Hasil, dan Analisa Berdasarkan hasil perancangan tersebut akan dilakukan pengujian perangkat lunak. Pengujian sistem dan analisa dilakukan berdasarkan parameter berikut : 1. Pengujian nickname. 2. Pengujian dengan thread dan tanpa thread. 3. Keberhasilan sistem room. 4. Keberhasilan untuk koneksi multipoint.

BAB IV Penutup Bab ini berisi kesimpulan dari keseluruhan proyek akhir tentang hasil yang telah diperoleh, dan saransaran untuk memperbaiki kelemahan yang ada demi pengembangan dan penyempurnaan di waktu mendatang, bila proyek akhir ini dilanjutkan suatu saat nanti.

-15BAB II PERENCANAAN SISTEM DAN TEORI PENUNJANG 2.1 BAHAN DAN ALAT Pada bagian ini dilakukan perencanaan dari pembuatan program aplikasi telephony pada PC berbasis J2SE, yang meliputi: a. Perencanaan jaringan. b. Perencanaan perangkat lunak. 2.1.1 Perencanaan Jaringan Tahap paling awal yang harus dilakukan pada penelitian ini adalah persiapan peralatan-peralatan yang dibutuhkan dalam sistem jaringan, yaitu : a. Dua buah komputer (PC). b. Headset. c. Webcam. d. LAN. 2.1.2 Perencanaan Perangkat Lunak Pada aplikasi telephony pada PC menggunakan kabel UTP dengan koneksi PC1 ke PC2 ini, dibutuhkan beberapa perangkat lunak untuk perencanaan dalam sistem tersebut, antara lain yaitu : 1. Java Java adalah sebuah bahasa pemrograman komputer berbasiskan

kepada Object Oriented Programming. Java didesain sedemikian rupa sehingga ukurannya kecil, sederhana, dan portable (dapat dipindah-pindahkan di antara bermacam platform dan sistem operasi). Program yang dihasilkan dengan bahasa java dapat berupa applet (aplikasi kecil yang jalan di atas web browser) maupun berupa aplikasi mandiri yang dijalankan dengan program java Interpreter. Salah satu keunggulan java adalah sifatnya yang platform independence, artinya java baik source program maupun hasil 5

-16-

kompilasinya sama sekali tidak bergantung kepada sistem operasi dan platform yang digunakan. Source code sebuah aplikasi dengan bahasa java yang ditulis di atas sistem Windows NT misalnya, dengan gampang dapat dipindahkan ke sistem operasi UNIX tanpa harus mengedit satu baris kodepun. Ini tentunya merupakan satu nilai tambah tersendiri. Selain itu, bukan hanya source code-nya saja yang bisa dipindahpindahkan antar sistem komputer, bahkan hasil kompilasinya pun bisa dijalankan di berbagai sistem komputer. Hal ini dimungkinkan dengan adanya bytecode. Setiap program yang ditulis dengan bahasa java, hasil kompilasinya berupa bytecode, yaitu sekumpulan instruksi yang kelihatannya seperti kode mesin (machine code) tapi tidak spesifik untuk satu jenis prosesor tertentu. Kemampuan java berjalan di lebih dari satu sistem operasi tidak lepas dari keberadaan Java Virtual Machine(JVM) yang menjembatani antara bytecode dan hardware. Untuk itu diperlukan instalasi JVM pada setiap platform yang berbeda agar bytecode dapat berjalan. Jika hanya untuk keperluan pengoperasian, hanya diperlukan Java Runtime Environment (JRE). Namun untuk membuat program, tidak bisa hanya mengandalkan JRE, dibutuhkan Java SDK (Software Development Kit) yang mempunyai compiler didalamnya. Contoh program Halo dunia yang ditulis menggunakan bahasa pemrograman java adalah sebagai berikut: class HaloDunia { public static void main(String[] argumen) { System.out.println("Halo Dunia"); } } a. Java 2 Standard Edition ( J2SE) Program di sisi server yang dibuat menggunakan compiler java dari platform J2SE, yaitu JDK (Java Development Kit) pada PC. JDK adalah salah satu tool dari J2SE untuk mengkompilasi dan

menjalankan program Java. Di dalamnya terdapat tool untuk menkompilasi program java dan JRE Tool J2SE yang salah satunya

-17-

adalah jdk1.7, seperti yang digunakan dalam sistem ini. b. Java Media Framework (JMF) JMF API merupakan arsitektur yang menggabungkan protokol dan pemrograman interface untuk merekam, mentransmisi, dan playback media. Pada JMF versi 2.1.1, Suns sebagai perusahaan pengembang bahasa pemrograman java berinisiatif untuk membawa pemrosesan time-base media kedalam bahasa pemrograman Java. Time-base media adalah mengubah data yang diterima dengan berdasarkan waktu, termasuk didalamnya seperti audio dan video klip, MIDI, dan animasi. Beberapa dari fungsi JMF, yaitu : a. Dapat digunakan untuk berbagai file multimedia pada Java Applet atau aplikasi. Format yang mendukung antara lain AU, AVI, MIDI, MPEG, QUICKTIME dan WAV. b. Play media streamming dari internet. c. Capture audio dan video dengan mikropon dan kamera video kemudian menyimpan data tersebut kedalam format yang mendukungnya. d. Mengirimkan audio dan video secara realtime kedalam jaringan internet atau intranet. e. Dapat digunakan untuk pemrograman penyiaran radio atau televisi secara langsung. 2. NetBeans 6.5 Pemrograman java yang dibuat menggunakan lingkungan editor pada NetBeans 6.5 untuk meletakkan kode-kode program java, sekaligus melakukan kompilasi dan mengeksekusinya. Pada software ini pula terdapat dua fasilitas yang dapat digunakan dalam satu lingkungan IDE, yaitu program yang berbasis J2SE.

-18-

Gambar 2.1 Editor Netbeans 6.5 2.2 CARA KERJA 2.2.1 Blok Diagram Sistem Secara global prinsip kerja dari perencanaan sistem dapat disimulasikan seperti Gambar 2.1 sebagai berikut: Client(PC) Server(PC)

Socket

Client(PC) Gambar 2.2 Blok Diagram Perencanaan Sistem

-19-

Cara kerja dari sistem di atas adalah sebagai berikut :

Terjadi interkoneksi dari server dan client dengan menggunakan socket. Dimana server menerima respons dari client dan mengirim data ke client. Sedangkan client menerima respons dari server dan mengirim data ke server. Dengan menggunakan thread, satu server bisa menerima respons dan mengirim data ke beberapa client. 2.2.2 Flowchart Sistem Server menterjemahkan dari nomor menjadi IP. Kemudian server akan menunggu koneksi dari PC client. Pada client IP tersebut diterjemahkan lagi menjadi nomor. Setelah terhubung, Server dan client membuat input dan output stream yang berfungsi untuk menerima dan mengirim data ke client. Server dan client saling berkirim dan menerima pesan. Setelah selesai, program menutup socket untuk memutuskan koneksi jaringan.

-20-

10

e n t S v e e r r T A Cli

T A S RT T n i a r s d i a las r IP nomor menjadi e r e r a lam S v d mb a t u t & u ( te li n gg s ) m mb a t u t & Me u inp Me im n g ir s a n m kondisi menun output strea n g ir & Me im n u tu so k & Me u inp menjadi nomo S RT T n i a IP r s d i a las r r

e s a n Me p c t

n u tu so k e ND Me p c t output strea E ND Gambar 2.3 Flowchart 2.2.3 Persiapan menerima pe Pada tahap ini dilakukan study literatur tentang teori tentang Aplikasi telephony, dan Java socket programming. Selain itu juga dilakukan persiapan untuk perencanaan sistem untuk jaringan serta perangkat lunak. Persiapan jaringan dilakukan dengan mempersiapkan peralatanperalatan yang dibutuhkan dalam penelitian, sedangkan persiapan perangkat lunak dilakukan dengan melakukan instalasi software yang dibutuhkan untuk pembuatan sistem ini. isi Client dan Server Sistem pada S menerima pe E

-21-

11

2.2.4 Perencanaan Jaringan Perencanaan jaringan yang akan dibuat bisa dilihat pada Gambar 2.4. erp Pengirim/Penerima LAN 192.168.0.1 192.168.0.2 Pengirim/Penerima

Pengirim/Penerima

192.168.0.3 Gambar 2.4 Perencanaan Jaringan di capture Dari gambar dapat kita lihat bahwa suara dari user menggunakan media microphone. Selain itu juga dilakukan pengambilan gambar melalui webcam. Suara tersebut masih dalam bentuk sinyal analog. Kemudian suara yang dalam bentuk sinyal analog tersebut,dirubah kedalam bentuk sinyal digital yang kemudian dirubah kedalam bentuk paket yang didalamnya dilengkapi dengan IP,UDP dan RTP setalah itu ditransmisikan kekomputer tujuan. Pada komputer tujuan, paket tersebut diambil datanya dan dirubah ke sinyal digital kemudian dirubah kembali kedalam sinyal analog kembali setelah itu dimainkan ke user menggunakan media headset dam gambarnya ditampilkan dimonitor.

-22-

12

2.3 Tempat dan Waktu Penelitian 2.3.1 Tempat Penelitian Penelitian dari pembuatan program aplikasi software telephony ini dilakukan di gedung D4 lantai 1, Ruangan Proyek Akhir Lab. Komunikasi Digital Politeknik Elektronika Negeri Surabaya. 2.3.2 Waktu Penelitian Adapun waktu penelitian untuk pembuatan program aplikasi ini pada mobile phone dimulai dari bulan Maret 2010 sampai Juni 2010. 2.4 Metode Analisa dan Pengumpulan Data Pengumpulan data dilakukan dengan cara menambahkan sebuah source code untuk mendapatkan lama waktu eksekusi program. Selain itu juga menggunakan software untuk mendapatkan delay dan trughput dari program.

2.5 Teori Penunjang A. Java 2 Standard Edition (J2SE) J2SE adalah inti dari pemrograman Java. JDK (Java Development Kit) adalah salah satu tool dari J2SE untuk mengkompilasi dan menjalankan program Java. Di dalamnya terdapat tool untuk menkompilasi program java dan JRE (Java Runtime Environment).

-23-

13

Gambar 2.5 Posisi J2SE pada Arsitektur Java2 Platform B. Dasar Java Media Framewor (JMF) Java TM Media Framework (JMF) memberikan arsitektur unified dan pesan protokol untuk mengelola akuisisi, pengolahan, dan pengiriman data media berbasis waktu. JMF dirancang untuk mendukung sebagian besar media standar jenis konten, seperti AIFF, AU, AVI, GSM, MIDI, MPEG, QuickTime, RMF, dan WAV. Dengan memanfaatkan keuntungan dari platform Java, JMF memberikan janji Write Once, Run Anywhere kepada pengembang yang ingin menggunakan media seperti audio dan video di program java mereka. JMF menyediakan cross-platform Java API untuk mengakses media yang mendasarinya. Implementasi JMF dapat memanfaatkan kemampuan sistem operasi yang mendasarinya, sedangkan pengembang dapat dengan mudah membuat program Java

portabel bahwa fitur-media berbasis waktu dengan menulis ke JMF API. Dengan JMF, dapat dengan mudah membuat applet dan aplikasi. Kerangka kerja yang memungkinkan pengembang dan penyedia teknologi canggih untuk melakukan proses pengolahan data kustom dari media mentah dan mulus memperluas JMF untuk mendukung jenis konten tambahan dan format, mengoptimalkan penanganan format yang didukung, dan menciptakan mekanisme presentasi baru.

-24-

14

a. DataSource DataSource berfungsi untuk mengatur transfer dari media. Pada JMF DataSource diidentifikasi dengan MediaLocator. b. Capture Device Capture device merupakan perangkat keras yang digunakan untuk memperoleh data, seperti mikropon, kamera biasa, atau video kamera. Capture media data akan menjadi input untuk Player agar dapat ditampilkan. c. Player Player memperoleh input stream data audio dan video kemudian mengirimnya ke speaker atau layar. Player merupakan interface yang akan mempersiapkan suatu DataSource untuk dipresentasikan. Terdapat enam tahapan pada JMF Player: a. Unrealized : pada tahapan ini Player belum mengenali media yang akan digunakan. b. Realizing : pada tahapan ini Player akan menentukan materi atau media yang akan dipakai. c. Realized : pada tahapan ini Player mengetahui materi atau media yang digunakan dan memiliki informasi tentang tipe media yang akan ditampilkan. d. Prefetching : Player akan mempersiapkan untuk menampilkan media. Selama tahapan ini, Player akan preload media data untuk memperoleh resource yang digunakan dan apa saja yang dibutuhkan untuk mulai memainkan media data. e. Prefetched : Player telah selesai prefetching media data, dan siap untuk start Player. f. Started : Langkah ini merupakan hasil ketika memanggil start(). Player bisa untuk menampilkan media data sekarang.

-25-

15

d. Processor Processor merupakan jenis dari Player. Dalam JMF API, Processor adalah interface dengan extends Player. Seperti halnya Player, Processor juga mendukung untuk kontrol menampilkan media data. Disamping enam langkah Player seperti yang dibahas sebelumnya, Processor memasukkan dua langkah sebelum proses ke Realizing tetapi setelah Unrealized. a. Configuring : Processor masuk ke tahapan configuring dari Unrealized ketika metode configure () dipanggil. Processor berada di Configuring setelah terhubung ke DataSource. rocessor b. Configured : setelah Configuring, P pindah ke Configured ketika Processor telah terhubung ke DataSource, dan data telah memiliki format yang telah ditentukan . e. DataSink DataSink adalah interface dasar untuk objek yang membaca isi media yang dikirimkan oleh suatu DataSource dan mengirimkan media tersebut ke beberapa tujuan f. Format Format merupakan class yang akan menempatkan suatu objek ke suatu format media yang tepat. g. Manager Manager adalah interface yang berfungsi sebagai penghubung objek, mengintegrasikan implementasi interface yang digunakan dengan kelas-kelas yang ada. Misalnya dengan Manager dapat dibuat Player dari DataSource.

-26-

16

C. Pemrograman Java Socket Pada perencanaan perangkat lunak ini, dibutuhkan adanya java socket untuk menyambungkan dua terminal yang menggunakan program java. Socket adalah sebuah abstraksi perangkat lunak yang digunakan sebagai suatu terminal dari suatu hubungan antara dua mesin atau proses yang saling berinterkoneksi. Di setiap mesin yang saling berinterkoneksi, harus terdapat program socket. Socket programming digunakan untuk membangun aplikasi jaringan yang -Server bekerja dengan sistem Client karena dengan socket memungkinkan user untuk melakukan suatu komunikasi data. Pada sistem Java, socket ini biasa disebut dengan Java Socket. Pada Java, dibutuhkan socket untuk membuat suatu hubungan ke mesin atau proses lain, baru kemudian user akan mendapatkan input stream dan output stream untuk pertukaran datanya. Terdapat dua belas kelas yang sudah tersedia pada java yang mendukung tipe koneksi Connection Oriented, yaitu java.net.ServerSocket yang digunakan server untuk listen koneksi dan java.net.Socket yang digunakan oleh client untuk menginisialisasi koneksi. Setelah client membentuk suatu koneksi socket dengan proses server, ServerSocket akan mengembalikan status server ke client melalui koneksi yang telah terbentuk sebelumnya. Socket Socket adalah salah satu cara untuk komunikasi antar komputer, umumnya lewat network atau internet. Socket biasa digunakan untuk berbasis client-server yang dapat menggunakan socket TCP/IP atau socket UDP Socket Client Socket adalah sebuah penghubung antara dua host, yang dapat dibangun dengan tujuh dasar operasi yaitu: Menghubungkan untuk mengendalikan mesin atau perangkat. Mengirim data . Menerima data. Menutup koneksi. Bergantung pada port.

-27-

17

Mendengarkan data yang masuk

. menerima koneksi dari mesin yang dikendalikan berdasarkan sebuah port. Class Socket pada Java,digunakan oleh client dan server yang mempunyai method yang menangani keempat operasi diatas.Tiga operasi berikutnya hanya dibutuhkan untuk server yang menunggu client untuk koneksi ke server cukup dengan mengimplementasikan class ServerSocket. Data yang dikirimkan melalui internet di dalam sebuah paket disebut datagram. Setiap datagram berisi header dan payload. header berisi alamat dan port untuk setiap paket, addres dan port untuk tiap paket yang masuk, sedangkan payload berisi data, sejak datagram mempunyai batasan jarak, memungkinkan sebuah paket hilang atau corupted ketika dikirimkan dan membutuhkan pegiriman lagi, untungnya socket memberikan kesempatan kepada programer untuk melakukan koneksi ke jaringan, sebagai contoh stream di dalam byte dapat dituliskan dan dapat dibaca. Socket melindungi programer dari low-level yang detail dari sebuah jaringan, seperti deteksi kesalahan (error detection), ukuran paket, pengiriman kembali sebuah paket, alamat jaringan dan masih banyak lagi. Java.net.Socket adalah JFC yang digunakan untuk melakukan operasi TCP client-side. Untuk mendefinisikan host dapat menggunakan InetAddress atau String sedangkan untuk definisi port menggunakan int mulai dari 0 sampai 65.535. Definisi constructornya dapat dilihat sperti dibawah ini: try { Socket koneksi = new Socket(192.168.12.138, 80); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } Jika host tidak ditemukan atau tidak berfungsi maka konstructor akan melemparkan UnknownHostException tetapi jika socket tidak dapat

-28-

18

dibuka maka akan dilemparkan ke IOException ada beberapa hal yang menyebabkan permintaan koneksi gagal misalnya host tujuan mungkin tidak menerima koneksi, koneksi dial-up terputus atau permasalahan routing menolak host tujuan(rejected).Selain metode diatas definisi socket dapat dilakukan dengan menggunakan class InetAddress. Socket Server Socket Server digunakan untuk menangani seluruh request dari jaringan yang disebut dengan socket client. Berikut ini adalah cara pendefinisian

konstruktor dari class ServerSocket yang akan digunakan untuk menangani koneksi dari Client. try { ServerSocket s=new ServerSocket(90); s.accept(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } Konstruktor dari ServerSocket diatas akan membuka atau menerima koneksi melalui port 90, kemudian method accept() yang dipanggil untuk menunggu koneksi dari client. Konstruktor akan melemparkan exception apabila port yang didefinisikan diatas telah dibuaat sebelumnya. Potongan kode berikut digunakan untuk memeriksa port yang telah digunakan(terbuka). for(int i=0;i<1024;i++){ try { ServerSocket s=new ServerSocket(i); }catch (IOException e) { System.out.println("Port ini telah digunakan : "+i); } } Selain metode diatas class ServerSocket juga menyediakan pilihan untuk membatasi jumlah koneksi dari client menggunakan dua parameter dimana parameter pertama adalah nomor port dan parameter kedua

-29-

19

adalah jumlah koneksi yang akan diterima, potongan kodenya dapat dilihat sebagai berikut. try { ServerSocket s=new ServerSocket(90,10); }catch (IOException e) { } Kebanyakan server yang dipakai sekarang menggunakan lebih dari satu IP Address untuk itu class ServerSocket juga menyediakan konstruktor yang digunakan untuk memilih IP mana yang akan digunakan, cotohnya sebagai berikut: try { ServerSocket s=new ServerSocket(100,10, InetAddress.getByName("192.168.12.138")); } catch (IOException e) { // TODO Auto-generated catch block

e.printStackTrace(); } Konstruktor diatas melewatkan tiga parameter yang pertama adalah nomor port kemudian parameter, kedua adalah banyaknya koneksi yang akan diterima dan yang terakhir yaitu ip addres yang akan menerima permintaan koneksi dari client dimana parameter ketiga ini menggunakan class InetAddress untuk melewatkan IP Address yang akan digunakan.

-30-

20

------------Halaman ini sengaja dikosongkan-------------

-31-

BAB III PEMBUATAN DAN ANALISA SISTEM 3.1 Pembuatan Sistem 3.1.1 Perangkat Keras (Hardware) Pembuatan sistem dibagi menjadi dua yaitu pembuatan perangkat keras (hardware) dan perangkat lunak (software). Pembuatan perangkat keras (hardware) berfungsi untuk mensuport system pada perangkat keras agar system dapat berjalan. Cara menggunakan perangkat keras (hardware) ini, User cukup dengan menginstal driver dari kamera yang digunakan dan juga driver dari sound. Tetapi jika menggunakan laptop yang ada web kamera, maka tidak perlu menginstal driver dari kamera, karena sudah terinstall secara otomatis. Namun, jika menggunakan computer atau PC kamera yang digunakan bisa bermacam-macam, sehingga kita perlu mengistall driver terlebih dahulu. 3.1.2 Pembuatan chatting Server Pada pembuatan aplikasi di sisi server ini, program yang akan dibuat adalah menggunakan bahasa pemrograman berbasis J2SE, sehingga nantinya dapat diaplikasikan pada PC. 1. Flowchart pada Aplikasi Chat disisi Client Pada pembuatan program di sisi client ini, dibuat flowchart untuk menggambarkan alur proses suatu client dalam melakukan akses ke server dari awal sampai akhir sesi komunikasi. Flowchart tersebut dibagi menjadi dua bagian yang menggambarkan diagram alur untuk tampilan Form dan diagram alur untuk melakukan koneksi. Berikut merupakan penjelasan singkat mengenai kedua bagian flowchart tersebut.

21

-32-

22

a. Flowchart untuk Tampilan Form pada Program Aplikasi Client

Gambar 3.1 Flowchart Tampilan Client Pertama kali user harus login terlebih dahulu. Login disini maksudnya user harus memasukkan IP server. Setelah memasukkan IP server, user kemudian memasukkan nickname. Kemudian baru program akan menghubungkan dengan server. Pada server akan dilakukan pengecekkan apakah nickname yang dibuat sudah ada yang memakai atau belum. Jika belum, maka program akan terhubung dengan server. Tetapi apabila nickname sudah digunakan, maka server akan meminta ke client untuk menginputkan kembali nickname yang baru. Selain itu jika IP server yang dituju itu salah, maka program tidak

-33-

23

akan bisa terkoneksi dan akan meminta untuk menginputkan IP yang benar. b. Flowchart untuk Tampilan Form pada Program Aplikasi Server

Gambar 3.2 Flowchart Tampilan Server Server pertama kali akan membuka port 9999. Kemudian listen di port tersebut menunggu sampai ada client yang terkoneksi. Ketika ada client yang terkoneksi, maka server akan mengecek apakah nickname yang dipakai client sudah ada atau belum. Jika nickname yang dipakai sudah ada, maka server akan meminta kepada client untuk memasukkan ulang nickname yang baru. Jika nickname belum ada yang memakai, maka client bias langsung tersambung dengan server.

-34-

24

2. Pembuatan Project pada NetBeans 6.5 Pada pembuatan program kali ini, program aplikasi dibuat dengan menggunakan software NeatBeans 6.5. Sebelum membuat program pada NetBeans 6.5, maka harus dibuat terlebih dahulu sebuah project yang khusus untuk platform J2SE. Berikut merupakan langkah langkah untuk membuat project

baru pada NeatBeans 6.5. a. Klik File New Project pada menu utama. b. Kemudian memilih project yang akan dibuat. Pada pembuatan project kali ini kita pilih java java aplication.

Ganbar 3.3 Memilih Project yang akan dibuat

-35-

25

c. Beri nama project yang akan dibuat. Misal player.

Gambar 3.4 Tampilan Dialog untu Memberi Nama Project. d. Setelah membuat project, kemudian buat package pada

project yang telah dibuat. e. Klik kanan pada project kemudian pilih new java package.

Gambar 3.5 Dialog untuk Memilih New Package

-36-

26

f.

Beri nama pada dialog package.

Gambar 3.6 Tampilan Dialog untuk Memberi Nama Package g. Selanjutnya kita membuat class yang akan kita buat. Pertama klik kanan pada package yang sudah dibuat kemudian pilih New Java class atau jFrame Form tergantung apa yang mau kita buat.

-37-

27

Gambar 3.7 Tampilan Pada saat Membuat class 2. Pembuatan Socket Chatting a. server.java Pada server, pertama dilakukan pembukaan port 9999 dan menunggu koneksi. try { serverSocket = new ServerSocket(9999); } catch(IOException e) { System.out.println("IO "+e); } Kemudian dibuatlah objek dari kelas cThread sehingga kelas tersebut dapat dijalankan dengan method start().

-38-

28

while (true) { try { clientSocket serverSocket.accept(); cThread s cThread(clientSocket); clients.add(s); s.start(); }

= = new

catch (IOException e) { System.out.println("IOaccept "+e); } }

Jika koneksi sudah terbentuk dari permintaan login, server akan memeriksa nickname karena harus unik. Jika nickname yang sudah dipakai, server akan mengirim permintaan nickname yang baru. Jika nickname tersedia , server akan mengirim daftarnya ke semua client. Selanjutnya, jika banyak client yang terhubung dengan server dan ada yang mengirim pesan umum, maka server akan meneruskannya ke semua client. Sedangkan jika client menerima pesan privat, maka server hanya akan meneruskannya ke tujuannya. Jika server menerima perintah log out, maka dihapuslah nickname tesebut dari list dan mengirim kembali up date list client terbaru ke semua client. Server bekerja dengan Thread, sehingga dapat menangani banyak client. b. cThread.java Pada program di bawah, cThread membuat soket yang digunakan untuk berhubungan dengan server. Input dari user akan dibaca berupa standart output stream lalu meneruskan pesan tersebut ke server dengan menuliskannya pada soket. Server akan menampilkan input dari soket ke client. Program

-39-

29

client akan membaca dan menampilkan pesan dari server. Selanjutnya terdapat perintah untuk mendapatkan output stream dari soket dan membuka PrintWriter di dalamnya. Kemudian dilakukan perintah untuk mendapatkan input stream dari soket dan membuka BufferedReader di dalamnya. Untuk mengirim data melaluii soket ke server, cThread cukup menuliskannya pada PrintWriter. Untuk mendapat respon dari server, cThread membacanya dari BufferedReader. try { Out = PrintWriter(clientSocket.getOutputSt ream(), true); in = new BufferedReader(new InputStreamReader(clientSocket.getIn putStream())); } catch (Exception e) { System.out.println(e); } } Perintahperintah selanjutnya merupakan perintah untuk merespon tindakan user yang melakukan login, log out, menulis pesan public dan privat. Dimulai dengan kode di bawah ini yang melakukan pengecekan akan adanya pesan (msg) pada BufferedReader (i). Jika benar , lalu dicek juga apakah pesan yang diterima diawali dengan Login, jika ya, maka akan dipanggil method login().

new

-40-

30

while (true) { String msg = in.readLine(); System.out.println(msg); if (msg.startsWith("Login")) { login(msg); } Jika pesan yang diterima adalah pesan log out maka koneksi dengan client akan diputus dengan perintah close(). else if (msg.equals("Logout")){ if (connected) { connected = false; int k server.clients.indexOf(this); server.clients.remove(this); sendList(); out.println("OK"); out.close(); in.close(); clientSocket.close(); return; } =

Jika pesan diawali dengan post maka server akan mengirim ke pesan ke semua client dan jika diawali dengan privatepost maka pesan hanya akan dikirim ke client tujuan.

-4131

else if (msg.startsWith("Post ")) { for (int i = 0; i < server.clients.size() ; i ++) { cThread t =

(cThread)server.clients.get(i); if (t.connected) { t.send("Recieve "+ nick+": " +msg.substring(5, msg.length())); } } } else if (msg.startsWith("PrivatePost ")) { StringTokenizer st = new StringTokenizer(msg.substring(12,msg.leng th()),", "); String message = st.nextToken(); String to = st.nextToken(); boolean success = false; for (int i = 0; i < server.clients.size() ; i ++) { cThread t =

(cThread)server.clients.get(i);

if (t.nick.equals(to)) { t.send("PrivateRecieve "+ nick+": " + message); success = true; break;

-42-

32

Kelas ini memiliki method bernama login() yang digunakan untuk memeriksa nickname yang digunakan client agar tetap unik dengan perulangan berikut. for (int i =

0;i<server.clients.size();i++) { if (server.clients.get(i) != null) { System.out.println(msg.substring(7, msg.length())); cThread temp (cThread)server.clients.get(i); if ((temp.nick).equals(msg.substring(7, msg.length()))) { exists = true; break;

Kelas ini juga memiliki methode send() yang digunakan untuk mengirim list client yang terkoneksi. for (int i = 0; i server.clients.size() ; i ++) { cThread t (cThread)server.clients.get(i); if (t.connected) { t.send(list); } < =

Pada sisi client, ada 4 kelas yang dibentuk: 1. readFromServer.java membaca koneksi dengan server 2. client.java kelas untuk membuat GUI dari aplikasi chat ini dengan menggunakan JFrame milik Netbeans 3. userInput.java untuk menuliskan pesan chatting .

-43-

33

4. clientRunner.java untuk menjalankan GUI dari client.java, karena kelas ini bertugas untuk membuat objek baru dari kelas client tersebut. c. readFromServer.java Progam ini berisi pembacaan client terhadap server. Di antaranya adalah, menerima pesan umum, pesan privat, mengetahui list terakhir client yang terhubung ke server, dan peringatan bahwa nickname yang diinginkan sudah dipakai sehingga harus menggunakan nickname lain. Hampir sama dengan perintahperintah pada cThread.java., kelas ini juga menampilkan list client, pesan yang diterima baik yang public maupun yang privat dengan perintah di bawah ini. System.out.print("List updated: New names: "); for (int i = 0; i < client.list.size();i++) { System.out.print(client.list.get(i) + " "); } System.out.println(); } else if (s.startsWith("Recieve")) { client.mainText.setText(client.mainTe xt.getText() + "\n" + s.substring(8,s.length())); client.mainText.setCaretPosition(clie nt.mainText.getText().length());

-44-

34

} else (s.startsWith("PrivateRecieve")) { client.mainText.setText(client.mainTe xt.getText() + "\n" + "Privat Messages: " + s.substring(14,s.length())); client.mainText.setCaretPosition(clie nt.mainText.getText().length()); } Untuk menjalankan client, langkah pertama yang harus dilakukan adalah menjalankan servernya dulu, setelah itu run clientRunner.java untuk membuat objek baru. Jika ingin membuka lebih dari 1 client, run lagi clientRunner.java untuk membuat objek lagi. d. clientRunner.java Kelas ini hanya bertugas untuk membuat objek baru dari kelas client.java. Jika ketika ingin mencoba memunculkan lebih dari 1 client, kita tinggal mengompile kelas ini. Untuk menjalankan GUI dari program chat ini, kita harus membuat objek terlebih dahulu, otomatis kelas inilah yang di run terlebih dahulu setelah menjalankan server. e. userInput.java Kelas ini merupakan turunan dari kelas Thread. Seperti tugas yang lalu mengenai fungsi run, dalam kelas ini dideklarasikan method bernama run(). Tujuan dari method ini adalah mengatur input dan output text dari ke server. Dalam method run() ini berisi pemanggilan fungsi read() dan send(), 2 method ini dideklarasikan pada kelas client.java. Tugas dari method send() adalah mengeluarkan input message dari client. if

-45-

35

f.

client.java

Bisa dibilang kelas ini merupakan program dari client yang utama. Pada kelas ini dibuat GUI sebagai interaksi untuk melakukan chatting dengan antar client. GUI dari program ini dibuat dengan bantuan Netbeans dengan JFramenya. Jadi kebanyakan dari tampilan source code merupakan hasil dari generate Java Swing tersebut. Sedangkan logicnya hanya berada pada aksi button, input text dan menumenu terkait. Yang akan dibahas hanya bagianbagian pentingnya saja, berikut penjelasannya : Private nickListMouseClicked(java.awt.event.Mou seEvent evt) { if (connected (!nickList.getSelectedValue().equals(ni ck))) { String msg JOptionPane.showInputDialog(null, "server:"); if (msg != null) { send("PrivatePost"+msg+","+nickList.get SelectedValue()); } System.out.println(nickList.getSelected Value()); } } void

&&

Perintah diatas merupakan perintah disaat kita melakukan private message kepada client tertentu. Ketika event bernilai true,

-46-

36

maka akan muncul dialog yang bertanya server mana yang dituju. Jika benar, akan tertulis Private Post dan pesannya pada server. private void jMenuItem1ActionPerformed2(java.awt. event.ActionEvent evt) { send("Logout"); client.logout = true; System.exit(0); } Perintah diatas untuk action ketika menu Disconnect diklik, akan muncul tulisan Logout pada server dan system client langsung berhenti. private void jMenuItem1ActionPerformed3(java.awt. event.ActionEvent evt) { String s; s = "Login and Connect. Connect to localhost then input your username\n"; JOptionPane.showMessageDialog( this, s,"Usage", JOptionPane.INFORMATION_MESSAGE ); } Perintah diatas ketika menu Help lalu Usage diklik. Muncul popup message yang berisi seperti string yang ada dalam variable s diatas.

-4737

static String server; private void

jMenuItem1ActionPerformed(java.awt.e

vent.ActionEvent evt) { setTitle("Connecting ..."); logout = false; sinput = new readFromServer(this); uinput = new userInput(); cSocket = null; out = null; in = null; boolean error; error = false; server =

JOptionPane.showInputDialog("Server: ", "localhost"); try { cSocket = new Socket(server,9999); out = new

PrintWriter(cSocket.getOutputStream( ), true); in = new BufferedReader(new InputStreamReader(cSocket.getInputSt ream())); uinput.start(); sinput.start(); } catch(UnknownHostException e) { JOptionPane.showMessageDialog( this, "No server is

found","ERROR", JOptionPane.ERROR_MESSAGE ); System.out.println("Host Error" + e); setTitle("Simple Java Chat - Cannot Connect Please Try another server");

-48-

38

error = true; } catch (IOException e) { System.out.println("IOException" e); } if (!error) { nick = null; nick JOptionPane.showInputDialog(null, "NickName: "); while(nick.contains(";")) { nick

JOptionPane.showInputDialog(null,"In put Nickname\";\".Cannot be null."); } send("Login: "+nick);

if (nick != null) { jMenuItem1.setEnabled(false); jMenuItem2.setEnabled(true); } } } Sedangkan perintah diatas mengatur client ketika akan connect. Dimulai ketika menu Connect pada menubar Login di klik. Awalnya client harus membaca dulu, apakah server sudah jalan atau belum, jika belum tidak akan bisa tersambung. Jika sudah berjalan servernya, akan muncul popup yang menanyakan alamat server, dalam hal ini kita isi dengan localhost. Lalu akan ditanyakan nickname untuk login. Saat kita mencoba tersambung dengan server, cSocket akan membuat objek baru yang mengakses port 9999. Namun, ketika server tidak ditemukan, akan muncul popup

-49-

39

message yang meminta kita untuk menuliskan alamat server yang tepat. void sendInput() { if (!connected) { JOptionPane.showMessageDialog( this, "Not connected! Actions Connect","Error", JOptionPane.ERROR_MESSAGE ); inputText.setText(""); } else if(inputText.getText().equals("") || inputText.getText().equals("\n") || inputText.getText()== null ) { inputText.setText(""); } else { send("Post "

replace(inputText.getText(),"\n"," ")); inputText.setText(""); } } Fungsi diatas merupakan method sendInput() yang merupakan method untuk membaca input yang diinput oleh client. Method ini digunakan untuk memasukkan text ke server, lalu server melempar string tersebut ke client yang dikehendaki. g. Tampilan Hasil Program Konsep Thread Pada gambar dibawah ini merupakan tampilan awal program chatting ketika belum terkoneksi keserver.

-50-

40

Gambar 3.8 Tampilan Program Chat Sebelum Terkoneksi Dari tampilan program diatas, ketika program belum terkoneksi dengan server maka terdapat keterangan berupa kalimat Not Connected pada textfield. Ketika program sudah terkoneksi dengan server, maka kalimat Not Connected akan digantikan dengan nickname yang telah kita buat. Misalnya kita nmenggunakan nickname farid maka pada program akan

ditampilkan nickname yang kita buat seperti yang ditunjukkan gambar dibawah ini.

-51-

41

Gambar 3.9 Tampilan Program Ketika Sudah Terhubung Selanjutnya ketika ada client yang terhubung dengan server yang sama dengan kita, maka pada kotak nickname akan ditampilkan siapa saja nickname dari client yang terkoneksi dengan server yang sama dengan kita seperti yang terlihat pada gambar berikut ini:

-52-

42

Gambar 3.10 Tampilan Ketika ada dua client yang terhubung Setelah terdapat client yang terkoneksi, maka kita dapat melakukan chatting dengan client tersebut dengan mengetikkan pesan yang ingin kita kirim didalam kotak pesan yang sudah tersedia. Tetapi kalau kita ingin mengetikkan pesan untuk client tertentu saja, maka kita klik dua kali pada nicname client yang akan kita tuju. Setelah di klik dua kali, maka akan muncul kotak dialog berikut untuk menuliskan pesan.

Gambar 3.11 Tampilan Dialog Private Message

-53-

43

Setelah mengetikkan pesan yang ingin kita kirim, kemudian

diklik tombol ok. Maka pada client yang dituju akan tampil seperti gambar 3.12 :

Gambar 3.12 Tampilan client untuk private message Selain itu pada sisi server akan dimonitor terus yang dikerjakan oleh client. Baik ketika pertama kali client terhubung maupun ketika client sudah tidak terhubung lagi.

-5444

Gambar 3.13 Tampilan Program Server 3.1.3 Pembuatan JMF Server a. AVTransmit.java

Pada class ini berfungsi untuk mengambil video dan audio dari media webcam dan juga michropone. Kemudian program juga akan menentukan jenis format apa yang akan digunakan untuk kompresi video maupun audio. Berikut ini hanya akan dijelaskan bagian-bagian penting saja dari program ini. String video = "vfw://0" ; String audio = "javasound://0" ; String port = "8000" ; String port1 = "7800" ; String sessionAddress = 10.252.101.195" ; System.out.println(video+"/"+sessi onAddress); Format fmt = null; AVTransmit2 at = new VTransmit2(new A MediaLocator(video),sessionAddress , port, fmt); AVTransmit2 at1 = new AVTransmit2(new MediaLocator(audio),sessionAddress , port1, fmt); // Start the transmission long mulai = System.currentTimeMillis(); String result = at.start(); long mulai1 = System.currentTimeMillis(); -55-

45

Program diatas pertama kali akan menginisialisasi media yang akan digunakan untuk mengambil gambar dan juga suara yang akan dikrimkan ke client. Selain itu juga di inisialisasi port yang akan digunakan untuk mengirimkan data. Disini digunakan dua port karena port yang pertama digunakan untuk mengirimkan gambar, dan port yang kedua digunakan untuk mengirimkan suara. Antara port pertama dan kedua dibuat berbeda jauh untuk meminimalisir supaya tidak terjadi penggunaan port yang sudah ada. Karena apabila kita mengirim menggunakan program ini, kita menginisialisasi di port 3000, maka program ini tidak hanya mengirimkan data melalui port 3000 saja, tetapi juga menggunakan port 3002. Setelah port dan ip address tujuan sudah di inisialisasi, maka program akan

memulai untuk mengirimkan gambar dan juga suara. if (result != null) { System.err.println("Error : " + result); System.exit(0); } System.err.println("Start transmission video for 120 seconds..."); if (result1 != null) { Ketika mengirimkan video dan audio, maka program akan memberikan keluaran nilai null yang diberikan ke System.err.println("Error : " + variabel result. Jika variabel result memiliki result); dengan null, maka pada waktu nilai tidak sama System.exit(0); pengiriman terdapat kesalahan, dan program akan } berhenti mengirimkan data. Kesalahan ini biasanya

-56-

46

berupa tidak bisa mengambil gambar melalui media yang sudah kita tentukan. try { Thread.currentThread().sleep( 120000); } catch (InterruptedException ie) { } // Stop the transmission at.stop(); at1.stop();

System.err.println("...transmission ended."); System.exit(0); } Pada listing program diatas, program akan mengirimkan data selama 120000 ms. Setelah program selesai mengirimkan data selama 120000 ms, program akan menutp processor kemudian baru menutup program. Hal ini merupakan safety ketika menggunakan sebuah media capture data.

-57-

47

b. Flowchart Untuk Transmisi Video dan Audio

Gambar 3.14 Flowchart Pengiriman Data Dari flowchart diatas dapat kita lihat bahwa program pertama kali akan menginisialisasi perangkat yang akan dipakai juga ip address dan port yang akan digunakan. Kemudian program mengambil video dan audio melalui perangkat yang sudah ditentukan. Program akan mengecek apakah keluaran yang dikirimkan ke variabel result berupa nilai null. Program akan mengeluarkan nilai null jika program tidak bias menginisialisasi perangkat yang digunakan untuk mengambil audio dan video. Jika keluarannya berupa nilai null, maka program akan melanjutkan untuk mengirimkan video dan audio. Program akan mengirimkan video dan audio selama 120000 ms. Setelah 120000 ms, program akan menutup koneksi.

-58-

48

c. AVReceive.java Program ini berfungsi untuk menerima data yang dikirimkan oleh program transmit. Untuk lebih jelasnya berikut ini akan diuraikan beberapa inti dari listing program. String Session[]={"10.252.111.73/2000"}; String Session1[]={"10.252.111.73/1800"}; AVReceive2 avReceive = new AVReceive2(Session,Session1); if (!avReceive.initialize()){ System.err.println("Failed to initialize the sessions."); System.exit(-1); } else if (!avReceive.initialize1()) { System.err.println("Failed to initialize the sessions."); System.exit(-1); }

Pada listing program diatas, pertama kali program akan menginisialisasi ip address dan port yang digunakan oleh pengirim data. Jika inisialisasi yang dilakukan gagal, maka program akan menampilkan pesan errornya kemudian menutup koneksi. Tetapi jika inisialisasi yang dilakukan sukses, programa akan melanjutkan ke langkah berikutnya. Yaitu program akan mengambil panjang vector dari data. Setelah mengambil vector, program kemudian membuka RTP session dan

-59-

49

mengambil nama pengirim. Setelah tahu data yang diterima, program kemudian akan menentukan control apa saja yang akan digunakan. Setelah ditentukan control yang akan digunakan, selanjutnya program menampilkan data yang sudah diterima, yaitu data video dan audio. Program akan menampilkan sampai data yang diterima sudah selesai. Setelah selesai, maka program akan melanjutkan listing berikut. try { while (!avReceive.isDone()) Thread.sleep(1000); } catch (Exception e) {} System.err.println("Exiting AVReceive2");

Jika program telah selesai menerima data, maka program akan melakukan sleep selama 1 detik. Untuk hasil penerimaan gambarnya dapat dilihat pada gambar dibawah ini.

-60-

50

Gambar 3.15 Tampilan Pada Penerima d. Flowchart Untuk Menerima Data Video dan Audio

Gambar 3.16 Flowchart penerima data

-61-

51

Pada flowchart diatas dapat kita lihat bahwa, pertama kali program akan menginisialisasi ip address pengirim data dan juga port yang akan digunakan untuk menerima data. Port ini harus sama dengan yang digunakan oleh pengirim data. Selanjunya program akan mengambil panjang vector dari data yang diterima. Setelah mendapatkan panjang vector dari data, program akan membuka RTP session. Setelah membuka RTP session, program mengambil nama dari pengirim kemudian program menentukan kontrol yang akan digunakan. Setelah menentukan kontrol yang digunakan, program menampilkan data yang sudah diterima yaitu berupa data video dan audio. Program melakukan perulangan sampai proses penerimaan selesai. Setelah selesai, program melakukan sleep selama 1 detik. 3.2 Pengujian Sistem dan Analisa Pada system yang telah dibuat dapat dilakukan pengujian untuk mengetahui kualitas dari performance jaringan dengan melakukan pengujian nicnkname, thread, delay, dan throughput dari program, untuk bisa diketahui aplikasi tersebut layak untuk dikategorikan sebagai salah satu contoh aplikasi teleconference atau bukan. Dengan mangklasifikasikan kedalam class-class. 3.2.1 Pengujian Delay dan Throughput dari JMF Pada software memiliki fungsi untuk komunikasi video streamming sehingga computer yang telah memiliki PC atau laptop yang memiliki webcam dapat dicapture. Kemudian baru dapat dilakukan pengujian, dengan membandingkan antara user dan bandwidth sehingga dapat diketahui besarnya bandwith yang digunakan akan mempengaruhi kualitas dari image tersebut, banyaknya user yang memkai aplikasi telephony ini juga dilakukan pengujian untuk mendapatkan perbandingan besarnya delay jika user yang menggunakan apliksi tersebut adalah 1 user atau 2 user. Pengukuran dilakukan sebanyak 10 kali pengukuran dengan menggunakan durasi waktu selama 1 menit menggunakan wireshak. Wireshark adalah software yang berfungsi untuk mengukur besarnya performance dari suatu jaringan. Berikut adalah data-data yang

-62-

52

dihasilkan selama pengujian. Pengujian ini digunakan untuk membandingkan dan mengetahui bandwidth yang digunakan satu user untuk mengakses software. Karena jika dapat diketahui besarnya bandwidth maka dapat dilakukan penghematan bandwidth. 1. Saat 1 user Data pengukuran delay saat user software telephony hanya 1 user. Tabel 3.1 pengukuran delay Pengukuran ke1 2 3 4 Delay (ms) 10.4 10.6 10.35 10.55

5 6 7 8 9 10 Rata-rata

10.72 11.24 11.51 10.99 10.96 10.58 10.79

Gambar 3.17 Grafik Pengukuran Delay

-63-

53

Data pengukuran throughput yang diper user.

kondisi 1 oleh saat

Tabel 3.2 Pengukuran throughput Pengukuran ke1 2 3 4 5 6 7 8 9 10 Rata-rata Kbps 110 177 171 169 174 159 147 151 160 169 158.7

Gambar 3.18 Grafik Pengukuran Througput 3.2.2 Pengujian Waktu Untuk Eksekusi Program Dalam hal ini akan dilakuan pengujian berapa lama waktu program dieksekusi ketika hanya satu client saja yang terkoneksi. Pengujian dilakukan selama 2 menit. Dari pengujian yang telah dilakukan dapat dilihat bahwa ketika

-64-

54

program dieksekusi, antara waktu pengiriman video dan audio sangat berbeda. Hal ini disebabkan karena data video jauh lebih berat dari pada audio. Sehingga ketika mengeksekusi data video, waktu yang dibutuhan relatif lebih lama. Tabel 3.3 Waktu Eksekusi Yang Dibutuhkan Untuk 1 Client Resolusi Waktu Video Waktu Audio

No Video (ms) (ms)

1 2

352x288 352x288

136328 130485

125766 126703

352x288 3 352x288 4 352x288 5 125922 125500 132985

121828

121860

121859

Rata-rata

130244

123603

Gambar 3.19 Grafik Pengukuran Waktu Eksekusi Program Pada tabel dibawah ini adalah eksekusi program ketika ada dua buah client yang terkoneksi. Dari tabel dapat dilakukan analisa bahwa ketika

-65-

55

ada dua buah client yang terkoneksi, maka program akan lebih berat ketika dijalanan. Hal ini terbukti dengan lebih lamanya waktu yang dibutuhan untukk mengeksekusi program. Karena program harus mengirimkan ke dua tujuan. Sehingga data yang dikirimkan akan semakin besar. Tabel 3.4 Waktu Eksekusi Yang Dibutuhkan Untuk 2 Client Resolusi No Video (ms) (ms) Waktu Video Waktu Audio

1 2

352x288 352x288

131703 131172

125688 125344

352x288 3 352x288 4 352x288 5 131109 131875 131375

125266

125235

125297

Rata-rata

131447

125366

Gambar 3.20 Grafik Pengukuran Waktu Eksekusi Program Pada waktu ada tiga client yang terkoneksi, waktu yang dibutuhkan semakin lama. Karena program yang dieksekusi semaik berat.

-66-

56

Tabel 3.5 Waktu Eksekusi Yang Dibutuhkan Untuk 3 Client Resolusi No Video 88 1 352x2 352x288 131062 125390 125406 (ms) (ms) Waktu Video Waktu Audio

2 352x288 3 352x288 4 352x288 5

131031 125281 130922 125312 130968 125313 130985

Rata-rata

130994

125340

Gambar 3.21 Gambar Pengukuran Waktu Eksekusi Program

-67-

57

Tabel 3.6 Waktu Eksekusi Yang Dibutuhkan Untuk 4 Client Resolusi No Video (ms) (ms) Waktu Video Waktu Audio

352x288

133984

125344

352x288 2 352x288 3 352x288 4 352x288 5 131188 133922 133953 133954

128359

126844

128297

125594

Rata-rata

133400

126928

Gambar 3.22 Gambar Pengukuran Waktu Eksekusi Program

-68-

58

Tabel 3.7 Waktu Eksekusi Yang Dibutuhkan Untuk 5 Client Resolusi No Video (ms) (ms) Waktu Video Waktu Audio

1 2

352x288 352x288

168641 135484

146531 126828

352x288 3 352x288 4 352x288 5 134204 132468 141640

131531

126844

126859

Rata-rata

142487

131719

Gambar 3.23 Gambar Pengukuran Waktu Eksekusi Program 3.2.4 Pengujian Dengan Tanpa Thread dan Dengan Thread Ketika program tidak diberi thread maka program hanya akan mampu menerima 1 client saja. Karena program tidak bisa mengatur port untuk client yang akan melakukan koneksi

-69-

59

Tabel 3.8 Pengujian Tanpa Thread Koneksi

No 1 2 3 4 5

Jumlah Client 1 2 3 4 5 Sukses Gagal

Ketika program diberi thread program bisa menerima banyak client karena program sudah mampu untuk mengatur port yang akan digunakan oleh client untuk melakukan koneksi. Jika tidak ada client yang melakukan koneksi maka program server akan listen di port yang sudah ditentukan. Tabel 3.9 Pengujian Dengan Thread Koneksi No 1 2 3 4 5 Jumlah Client 1 2 3 4 5 Sukses Gagal

3.2.5 Pengujian Untuk Nickaname Pada table dibawah ini merupakan hasil pengujian ketika ada nickname yang sama. Karena ketika ada nickname

-70-

60

yang sama, maka program akan meminta user untuk memasukkan nickname yang baru. Berikut ini pengujiannya. Table 3.10 Pengujian nickname No 1 2 3 4 5 Nickname Farid Farid Farid Farid Farid Koneksi Sukses

hasi

Gagal

-71-

61

3.2.6 Keberhasilan Sistem Room Gambar 3.24 merupakan hasil tampilan dari system room.

Gambar 3.24 Keberhasilan dari Sistem room Dari gambar ada dua user yang online yaitu ega dan ninan. Pertama user ninan mengirimkan kalimat testing ega, maka pada ega dan ninan akan ditampilkan kalimat tersebut. Berbeda ketika mengirimkan private message. Ketika mengirimkan private message, maka yang memperoleh pesan hanya user yang dituju saja. Seperti yang terlihat pada gambar berikut ini.

-72-

62

Gambar 3.25 Tampilan Untuk Private message Tampak pada gambar diatas, ketika ega mengirimkan private message ke user ninan, maka yan menerima pesan hanya user ninan saja, sedangkan fulan dan juga ega tidak menerima pesan.

-73-

BAB IV PENUTUP 4.1 KESIMPULAN Berdasarkan hasil pengujian dan analisa yang telah dibuat, maka dapat disimpulkan bahwa: 1. Aplikasi software telephony ini membutuhkan bandwidth minimal yaitu sebesar 158 Kbps untuk pengiriman ke-1 client. Penentuan ini diperlukan supaya pengiriman data dapat dilakukan dengan delay yang singkat. Pengiriman data dengan delay yang singkat memang dibutuhkan, mengingat bahwa aplikasi ini harus bekerja secara real time. 2. Waktu yang dibutuhkan untuk eksekusi program akan semakin lama ketika semakin banyak client yang terkoneksi adalah 130244 ms dimana waktu eksekusi waktu 1 client adalah 131447 ms sedangakan saat 2 client. Hal ini karena data yang dikirimkan semakin besar.

4.2 SARAN Proyek akhir ini masih memiliki banyak kekurangan, dan penyusun berharap semoga kekurangan tersebut dapat diperbaiki di masa mendatang. Sehingga pada suatu saat nanti, aplikasi ini dapat dikembangkan menjadi lebih baik dan bermanfaat. Penyusun menyarankan agar aplikasi pada ini dapat ditambahkan lebih banyak fasilitas lain supaya lebih efisien dah mudah digunakan.

63

-74-

64

-----Halaman ini sengaja dikosongkan-----

-75-

65

DAFTAR PUSTAKA [1] Aitenbichler, Erwin., JMF, Java Media Framework, Abt. Telekooperation TU Darmstadt, May 2002. [2] Haneef, Anwar M., JMF-Multimedia Networking for The Rest of Us, URL: http://www. -unix.ecs.umass.edu/~ahaneef, 2002. [3] Kurniawan, Budi., Program Multimedia With JMF, Part 1, URL: http://www.javaworld.com/jw-04-2001/jw0406-jmf1.html, 6 April 2001. [4] Kurniawan, Budi., Program Multimedia With JMF, Part 2, URL: Transmisi, Vol. 9, No. 1, Juni 2005 : 5 10 10 http://www.javaworld.com/jw-06-2001/jw-0504- jmf1.html, 4 May 2001. [5] Schulzrinne., Casner., RTP: A Transport Protocol for Real Time Applications, Revisi 1.1 , RFC 1889, 12 Juni 2002. [6] Zhou, S., P King, A Simple Platform Independent Video on Demand

Application, Electrical Engineering & Telecomunication The University of New South Wales, Autralia, 2002. [7] ,Java Media Framework API Guide, URL: http://www. java.sun.com/ products /javamedia/ jmf/2.1/guide/JMFTOC.html, 19 November 1999.

65

-76-

66

-----Halaman ini sengaja dikosongkan-----

-77-

LAMPIRAN Software yang perlu diinstal terlebih dahulu adalah jdk-6u16nb-6_7_1-windows-ml.exe dimana langkah instalasinya seperti dibawah ini Klik installer jdk-6u16-nb-6_7_1-windows-ml, sehingga mencul tampilan

Setelah akan muncul halaman awal instalasi

67

-78-

68 Pilih Next dan centang pilihan I accept the terms in the license agreement

Tentukan letak folder untuk tempat intalasi jdk1.6.0_16 dan NetBens 6.7.1, seperti di bawah ini

-79-

6 9

Pilih next maka muncul tampilan konfirmasi letak folder instlasi, pilih install untuk mulai instalasi.

-80-

70

Sehingga muncul tampilan proses instalasi seperti di bawah ini

Setelah proses instalasi selesai pilih fini sh

-81-

71 Langkah selanjutnya adalah install NetBeans 6.7.1, caranya seperti dibawah ini Klik installer NetBeans 6.7.1 sehingga mencul tampilan ,

Setelah akan muncul halaman konfigurasi awal instalasi

-82-

72 Setelah itu akan muncul halaman untuk memilih software apa yang perlu diinstall

Pilih customise, dan centang software ang prlu diinstall. Pada proyek ini software yang perlu diinstall hanya Java ME saja. Selanjutnya pilih OK.

-83-

73 Akan muncul halaman konfirmasi software yang akan diinstal dan pilih Next

centang pilihan I accept the terms in the license agreement

-84-

74 Pilih Next dan Install untuk memulai instalasi

Setelah proses instalasi sel

pilih Finish esai

-85-

RIWAYAT HIDUP Nama : Muhammad Farid Ghozi NRP : 7207 030 009 TTL : Kediri, 05 September 1988 Alamat: Ds. SambirejoKec.Gampengrejo Email : zieva_c4hkdr@yahoo.co.id Telp : 0856 5567 4078 Hobi : Olahraga, Nonton dan Makan Penulis lahir di Kediri tepatnya tanggal 05 September 1988. Selepas menyelesaikan SMU/SMK sederajat di SMK Telkom Darul Ulum Jombang dan melanjutkan study di Politeknik Elektronika Negeri Surabaya pada tahun 2007 dengan mengambil pendidikan D3 Teknik Telekomunikasi PENS - ITS. Pendidikan : SD Sambirej Kediri MTs Negeri 2 Kediri SMK Telkom Darul Ulum Jombang PENS ITS Jurusan Teknik Telekomunikasi Pengalaman Kerja : Enginer - PT Telkom Enginer PT Adyawinsa Dinamika 1995 2001 2001 2004 2004 2007 2007 2010

71

-86-

Anda mungkin juga menyukai