Jumat, 29 April 2016

Membangun Aplikasi Client-Server TCP

Aplikasi Client-Server TCP dengan Java

1. Buat program server terlebih dahulu seperti di bawah ini, simpan dengan nama simpleServer.java:

import java.io.*;
import java.net.*;
public class simpleServer {
public final static int TESTPORT = 5000;
public static void main(String args[]) {
ServerSocket checkServer = null;
String line;
BufferedReader is = null;
DataOutputStream os = null;
Socket clientSocket = null;
try {
checkServer = new ServerSocket(TESTPORT);
System.out.println("Aplikasi Server hidup ...");
} catch (IOException e) {
System.out.println(e);
}
try {
clientSocket = checkServer.accept();
is = new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
os = new DataOutputStream(clientSocket.getOutputStream());
} catch (Exception ei) {
ei.printStackTrace();
}
try {
line = is.readLine();
System.out.println("Terima : " + line);
if (line.compareTo("salam") == 0) {
os.writeBytes("salam juga");
} else {
os.writeBytes("Maaf, saya tidak mengerti");
}
} catch (IOException e) {
System.out.println(e);
}

try {
os.close();
is.close();
clientSocket.close();
} catch (IOException ic) {
ic.printStackTrace();
}
}
}

Pada Listing diatas menjelaskan tentang pembuatan program server pertama dengan mengimport java. io merupakan singkatan dari Input Output. Input melibatkan masukan data dari peralatan input, sedangkan output akan menampilkan data kepada pengguna dan program mengimport java. net paket ini berisi kelas yang memperbolehkan program untuk berkomunikasi melalui jaringan pada sisi server.

2. kemudian buat program client, simpan dengan nama simpleClient.java:

import java.io.*;
import java.net.*;
public class simpleClient {
public final static int REMOTE_PORT = 5000;
public static void main(String args[]) throws Exception {
Socket cl = null;
BufferedReader is = null;
DataOutputStream os = null;
BufferedReader stdin = new BufferedReader(new
InputStreamReader(System.in));
String userInput = null;
String output = null;
// Membuka koneksi ke server pada port REMOTE_PORT
try {
cl = new Socket(args[0], REMOTE_PORT);
is = new BufferedReader(new
InputStreamReader(cl.getInputStream()));
os = new DataOutputStream(cl.getOutputStream());
} catch(UnknownHostException e1) {
System.out.println("Unknown Host: " + e1);
} catch (IOException e2) {
System.out.println("Erorr io: " + e2);
}
// Menulis ke server
try {
System.out.print("Masukkan kata kunci: ");
userInput = stdin.readLine();
os.writeBytes(userInput + "\n");
} catch (IOException ex) {
System.out.println("Error writing to server..." + ex);
}
// Menerima tanggapan dari server
try {
output = is.readLine();
System.out.println("Dari server: " + output);
} catch (IOException e) {
e.printStackTrace();
}
// close input stream, output stream dan koneksi
try {
is.close();
os.close();
cl.close();
} catch (IOException x) {
System.out.println("Error writing...." + x);
}
}
}

3. Logika Program
Pada listing program merupakan kodingan client server dimana :
  • Untuk bisa melakukan koneksi client server, program server harus berjalan terlebih dahulu.
  • Di sisi server disediakan sebuah socket, yang disebut welcoming socket yang fungsinya untuk mendeteksi adanya permintaan koneksi dari sisi client. 
  • Di sisi client terdapat client socket. Jika ingin menghubungi server, maka melalui client socket-nya, client membuat inisialisai koneksi ke welcoming socket milik server, dengan mode three-way handshake. 
  • Setelah welcoming socket menerima inisialisasi koneksi dari client socket, aplikasi server akan membuat connection socket di sisi server. Dengan connection socket ini, client socket dan connection socket berinteraksi satu sama lain untuk mengirim dan menerima data. 
  • Client membaca data yang dikirim oleh server dari client socket-nya. Kemudian menampilkan data tersebut di monitor.
  • Selanjutnya Client membaca inputan dari keyboard, kemudian mengirimkan hasilnya ke server melalui socket-nya. 
  • Server membaca data yang dikirim oleh client di connection socket 
  • Server mengubah data menjadi huruf besar 
  • Server mengirimkan data yang telah diubah menuju client melalui socket-nya. 
  • Client membaca data yang dikirim oleh server dari client socket-nya. Kemudian menampilkan data tersebut di monitor. 
4.  Kompilasi kedua program diatas dengan :
$ javac simpleServer.java
$ javac simpleClient.java

5. Jalankan kedua program tersebut dikomputer anda. Pertama jalankan server, (buka
jendela console shell lebih dulu), dan tunggu koneksi client
$ java simpleServer
Untuk menjalankan program client buka jendela console shell baru dan ketikkan.
$ java simpleClient <nama-komputer-server>


Pada aplikasi client, masukkan kata kunci yang diminta, yaitu “salam”. Perhatikan
apa terjadi kemudian di sisi aplikasi Server maupun client. Coba juga Anda
memasukkan kata-kata yang lain maka server akan mengirimkan pesan "maaf, saya tidak mengerti" kepada client.


Kamis, 28 April 2016

GET IP, GET NAME, IPtoName, NsLookup

Cara Mendapatkan GET IP Pada Java

1. Buat file .java pada notepad

2. Ketikan program di bawah ini
import java.net.*;
public class getip {
          public static void main(String args[]) throws Exception {
          InetAddress host = null;
          host = InetAddress.getLocalHost();
          byte ip[] = host.getAddress();
                 for (int i=0; i<ip.length; i++) {
                     if (i > 0) {
                     System.out.print(".");
                     }
                 System.out.print(ip[i] & 0xff);
                 }
          System.out.println();
          }
}

3. Setelah selesai seperti gambar di bawah ini save dengan nama seperti nama classnya yaitu getip.java

4. Logika Program GETIP
Pertama program mengimport package java.net paket ini berisi kelas yang memperbolehkan program untuk berkomunikasi melalui jaringan. kemudian program membuat nama class yang bernama getip. Selanjutnya deklarasikan InetAddress host bernilai null dan deklarasi host bernilai
InetAddress.getLocalHost();  didapatkan dari nilai InetAddress pada localhost. Selanjutnya program akan mencetak Ip komputer dengan memanggil nilai variable host.getAddress();.

5. Kemudian compile pada cmd sehingga akan tampil ip yang digunakan

Cara Mendapatkan GET Name Pada Java

1. Buat file .java pada notepad. program ini untuk mengetahui nama dari komputer yang digunakan.

2. Ketikan program di bawah ini
import java.net.*;
public class getName {
          public static void main(String args[]) throws Exception {
          InetAddress host = null;
          host = InetAddress.getLocalHost();
          System.out.println("Nama komputer Anda: " +
          host.getHostName());
         }
}

3. Setelah selesai seperti gambar di bawah ini save dengan nama seperti nama classnya yaitu getName.java

4. Logika Program GETNAME
Pertama program mengimport package java.net paket ini berisi kelas yang memperbolehkan program untuk berkomunikasi melalui jaringan. kemudian program membuat nama class yang bernama getName. Selanjutnya deklarasikan InetAddress host bernilai null dan deklarasi host bernilai
InetAddress.getLocalHost(); Selanjutnya program akan mencetak Nama Komputer Anda dengan memanggil nilai variable host.getHostName();.

5. Kemudian compile pada cmd sehingga akan tampil nama komputer  yang digunakan

Cara Mendapatkan IPtoName
1. Buat file .java pada notepad program ini untuk menemukan nama dengan ip

2. Ketikan program di bawah ini
import java.net.*;
public class IPtoName {
public static void main(String args[]) {
if (args.length == 0) {
System.out.println("Pemakaian: java IPtoName <IP address>");
System.exit(0);
}
String host = args[0];
InetAddress address = null;
try {
address = InetAddress.getByName(host);
} catch (UnknownHostException e) {
System.out.println("invalid IP - malformed IP");
System.exit(0);
}
System.out.println(address.getHostName());
}
}

3. Setelah selesai seperti gambar di bawah ini save dengan nama seperti nama classnya yaitu IPtoName.java

4. Logika Program
Mengimport package java.net paket ini berisi kelas yang memperbolehkan program untuk berkomunikasi melalui jaringan. Kemudian kita buat class bernama IPtoName, selanjutnya program ini terdapat kondisi if dimana jika panjang string host sama dengan 0 maka cetak nama pemakai dan IPtoNamelalu program akan kembali ke semula. Program akan mendeklarasikkan String host yaitu 0 dan InetAddress address bernilai null. Kemudian terdapat perintah try dan catch yang digunakan untuk menangkap kesalahan didalam program, pada perintah try ini akan mencoba memanggil nama host kemudian disimpan didalam variabel address, jika terdapat kesalahan maka program akan mencetak invalid IP – malformed ip, jika program tidak terjadi kesalahan maka program akan mencetak nilai nama address host.

5. Kemudian compile pada cmd sehingga akan tampil nama komputer

Cara Mendapatkan IP Dengan HostName (NsLook)

1. Buat file .java pada notepad

2. Ketikan program di bawah ini
import java.net.*;
public class NsLookup {
public static void main(String args[]) {
if (args.length == 0) {
System.out.println("Pemakaian: <namahost>");
System.exit(0);
}
String host = args[0];
InetAddress address = null;
try {
address = InetAddress.getByName(host);
} catch(UnknownHostException e) {
System.out.println("Unknown host");
System.exit(0);
}
byte[] ip = address.getAddress();
for (int i=0; i<ip.length; i++) {
if (i > 0) System.out.print(".");
System.out.print((ip[i]) & 0xff);
}
System.out.println();
}
}

3.Setelah selesai seperti gambar di bawah ini save dengan nama seperti nama classnya yaitu Nslookup.java

4.Logika Program NsLookup
Pertama program akan mengimport package java.net paket ini berisi kelas yang memperbolehkan program untuk berkomunikasi melalui jaringan. kemudian buat class program yang bernama NsLookup. Pada program ini jika panjang karakter string args sama dengan 0 maka akan mencetak Pemakai : Java NsLookup hostname. Kemudian mendeklarasikan String host adalah 0 dan InetAddress address bernilai null.
Kemudian terdapat perintah try dan catch yang digunakan untuk menangkap kesalahan didalam program, pada perintah try ini akan mencoba memanggil nama host kemudian disimpan didalam variabel address, jika terdapat kesalahan maka program akan mencetak unknown host, jika program tidak terjadi kesalahan terdapat perintah perulangan for, didalam perulangan ini terdapat perintah percabangan if, jika nilai variabel i lebih ebsar dari 0 maka program akan mecetak nilai ip dengan memanggil nilai dari variabel ip[i]

5.Kemudian compile pada cmd sehingga akan tampil ip dari nama PC

Cara Mendapatkan IP dan Nama IP Pada Java

1. Buat file .java pada notepad

2. Ketikan program di bawah ini
import java.net.*;
public class PROGJAR3
{
public static void main(String[] args)
{
try
{
InetAddress address = InetAddress.getByName("anatonic.com");
System.out.println(address);
InetAddress[] addresses = InetAddress.getAllByName("localhost");
for(int i=0;i<addresses.length;i++)
System.out.println(addresses[i]);
InetAddress mesin = InetAddress.getLocalHost();
System.out.println(mesin);
String lokal = mesin.getHostName();
String ip = mesin.getHostAddress();
System.out.println(lokal);
System.out.println(ip);
}
catch (UnknownHostException uhEx){}
}
}

3. Setelah selesai seperti gambar di bawah ini save dengan nama seperti nama classnya yaitu PROGJAR3.java

4. Logika Program
mengimport java.net untuk mengambil ip. Kemudian kita buat class bernama PROGJAR3, selanjutnya kita mendapatkan InetAddress host dari InetAddress.getByname dan mendapatkan nilai ip dari host name antonic.com. kemudian program akan menampilkan ip dan lokal.

5. Kemudian compile pada cmd sehingga akan tampil nama dan ip komputer


Jumat, 15 April 2016

Pengoprasian Data Qubit, Quantum Gates, Algoritma Shor

Pengoprasian Data Qubit.
Pengoperasian pada Data Qubits adalah dengan kedua nilai yang disimpan pada setiap qubit akan selalu mempengaruhi operasi komputer kuantum. Selain itu, sebuah n qubits sama-sama ber-superposisi dari 0 dan 1, dia berperan untuk mengkodekan 2n nilai. Komputer kuantum dapat menghitung nilai keseluruhannya sekaligus. Keadaan paralel ini memiliki istilah Paralelisme Kuantum. Setiap rangkaian yang tercipta selalu memiliki rangkaian kuantum yang sesuai. Jadi dapat disimpulkan bahwa teknologi yang diterapkan pada komputer kuantum mampu melakukan perhitungan pada semua nilai pada waktu yang hampir sama, dengan waktu yang sama komputer konvensional hanyabisa melakukan perhitungan tunggal.

 Quantum Gates.
Pada saat ini, model sirkuit komputer adalah abstraksi paling berguna dari proses komputasi dan secara luas digunakan dalam industri komputer desain dan konstruksi hardware komputasi praktis. Dalam model sirkuit, ilmuwan komputer menganggap perhitungan apapun setara dengan aksi dari sirkuit yang dibangun dari beberapa jenis gerbang logika Boolean bekerja  pada beberapa biner (yaitu, bit string) masukan. Setiap gerbang logika mengubah bit masukan ke dalam satu atau lebih bit keluaran dalam beberapa mode deterministik menurut definisi dari gerbang. dengan menyusun gerbang dalam grafik sedemikian rupa sehingga output dari gerbang awal akan menjadi input gerbang kemudian, ilmuwan komputer dapat membuktikan bahwa setiap  perhitungan layak dapat dilakukan. Quantum Logic Gates, Prosedur berikut menunjukkan bagaimana cara untuk membuat sirkuit reversibel yang mensimulasikan dan sirkuit ireversibel sementara untuk membuat  penghematan yang besar dalam jumlah ancillae yang digunakan.
  • Pertama mensimulasikan gerbang di babak pertama tingkat.
  • Jauhkan hasil gerbang di tingkat d / 2 secara terpisah.
  • Bersihkan bit ancillae.
  • Gunakan mereka untuk mensimulasikan gerbang di babak kedua tingkat.
  • Setelah menghitung output, membersihkan bit ancillae.
  • Bersihkan hasil tingkat d / 2. 
Sekarang gerbang reversibel ireversibel klasik dan klasik, memiliki konteks yang lebih  baik untuk menghargai fungsi dari gerbang kuantum. Sama seperti setiap perhitungan klasik dapat dipecah menjadi urutan klasik gerbang logika yang bertindak hanya pada bit klasik pada satu.


  Algoritma Shor.
Algoritma Shor, dinamai matematikawan Peter Shor , adalah algoritma kuantum yaitu merupakan suatu algoritma yang berjalan pada komputer kuantum yang berguna untuk faktorisasi bilangan bulat. Algoritma Shor dirumuskan pada tahun 1994.  Inti dari algoritma ini merupakan bagaimana cara menyelesaikan faktorisasi terhaadap bilanga interger atau bulat yang besar.

Efisiensi algoritma Shor adalah karena efisiensi kuantum Transformasi Fourier, dan modular eksponensial. Jika sebuah komputer kuantum dengan jumlah yang memadai qubit dapat beroperasi tanpa mengalah kebisingan dan fenomena interferensi kuantum lainnya, algoritma Shor dapat digunakan untuk memecahkan kriptografi kunci publik skema seperti banyak digunakan skema RSA. Algoritma Shor terdiri dari dua bagian:
  • Penurunan yang bisa dilakukan pada komputer klasik, dari masalah anjak untuk masalah ketertiban-temuan.
  • Sebuah algoritma kuantum untuk memecahkan masalah order-temuan.
Hambatan runtime dari algoritma Shor adalah kuantum eksponensial modular yang jauh lebih lambat dibandingkan dengan kuantum Transformasi Fourier dan pre-/post-processing klasik. Ada beberapa pendekatan untuk membangun dan mengoptimalkan sirkuit untuk eksponensial modular. Yang paling sederhana dan saat ini yaitu pendekatan paling praktis adalah dengan menggunakan meniru sirkuit aritmatika konvensional dengan gerbang reversibel , dimulai dengan penambah ripple-carry. Sirkuit Reversible biasanya menggunakan nilai pada urutan n ^ 3, gerbang untuk n qubit. Teknik alternatif asimtotik meningkatkan jumlah gerbang dengan menggunakan kuantum transformasi Fourier , tetapi tidak kompetitif dengan kurang dari 600 qubit karena konstanta tinggi.

Kelemahan dan Kelebihan Algoritma Quantum Shor
Berbeda dengan komputer konvensional yang deterministik, komputer quantum bersifat nondeterministik dan probabilistik, yang berarti suatu algoritma kadang kala dapat berhasil dan kadang kala akan gagal biarpun untuk kondisi yang sama. Hal ini dikarena sifat pengukuran dalam mekanika quantum yang probabilistik. Akibatnya, Algoritma Shor dapat gagal menemukan faktor karena beberapa sebab, diantaranya:
  • Hasil pengukuran dari transformasi quantum fourier dapat berupa 0, membuat langka ke 10 tak mungkin dilakukan.
  • Kadang hasil faktorisasi algoritma akan menghasilkan 1 dan n, yang secara definisi benar tetapi tidak berguna.
  • Bila hasil r ganjil, maka langkah ke 10 tidak dapat dilakukan
Walaupun begitu, probabilitas sukses akan bertambah setiap kali algoritma diulang. Dalam Algoritma Shor yang dimodifikasi dengan penentuan order, probabilitas sukses setelah 2 kali jalan lebih dari 60%, dan probabilitas sukses setelah 4 kali jalan lebih dari 90%.

Sumber:
http://rhaamdamaulana.blogspot.co.id/2015/10/algoritma-shor-algoritma-shor-algoritma.html.
http://crows-haikal.blogspot.co.id/2015/08/quantum-computing-entanglement.html
http://randyap14.blogspot.co.id/2015/12/pengantar-quantum-computation.html?view=magazine

 

Dinar Dwi Cahya Template by Ipietoon Cute Blog Design and Bukit Gambang