Dasar JAVANetwork Programming

Posted: 5 November 2010 in Desktop, Networking, Programming
Tag:, , ,

Pemrograman jaringan (network programming) pada dasarnya identik dengan pemrograman socket ataupun pemrograman client-server, yaitu menulis suatu program komputer yang nantinya dapat berkomunikasi dengan program lain di sebuah jaringan komputer. Aktivitas ini kebanyakan beroperasi pada lapisan Application Layer TCP/IP dimana menggunakan socket (kombinasi alamat IP dan port) yang disediakan oleh lapisan Transport Layer. Program (proses) yang memulai komunikasi disebut proses klien sedangkan program yang menunggu inisiasi komunikasi disebut sebagai proses server. Komunikasi antara proses klien dan server ini adalah point-to-point dimana dapat berupa connection-oriented (proses berlangsung dalam suatu sesi komunikasi menggunakan protokol TCP) ataupun connectionless (proses tanpa sesi komunikasi menggunakan protokol UDP). Sebuah program yang dapat bertindak baik sebagai klien maupun server didasarkan pada komunikasi peer-to-peer. Aktivitas pemrograman jaringan telah menghasilkan berbagai macam aplikasi yang banyak dipakai di dunia internet dimana mengimplementasikan berbagai protokol (HTTP, FTP, SMTP, dsb), baik itu di sisi server (Apache Web Server/HTTP, ProFTPd/FTP, postfix mail/SMTP, dsb) maupun di sisi klien (Mozilla Browser/HTTP, Filezilla/FTP, Outlook/SMTP, dsb).

TCP/IP Network Programming

TCP/IP Network Programming

JAVA merupakan salah satu bahasa pemrograman yang mendukung pemrograman jaringan. Hal ini didukung oleh 2 pustaka terkait yaitu java.net.ServerSocket (untuk implementasi server) dan java.net.Socket (untuk implementasi client). Pada artikel kali ini akan diimplementasikan sebuah aplikasi komunikasi sederhana yaitu “Ngomen” yang memungkinkan 2 buah komputer untuk saling bertukar pesan plaintext (komunikasi connection-oriented dan peer-to-peer). Adapun antarmuka aplikasi diimplementasikan menggunakan Swing untuk mempermudah pengoperasiannya.

Langkah pertama adalah membuat antarmuka aplikasi sebagai berikut (lengkap dengan asosiasi komponen dengan nama variabel yang perlu diketahui) :

Antarmuka Aplikasi

Antarmuka Aplikasi

Langkah kedua adalah membuat method yang mengimplementasikan proses server. Pada method ini server akan mendengarkan inisiasi komunikasi dari klien melalui port 14144. Jika inisiasi komunikasi ada dan sesi komunikasi terbentuk (Server.accept()) maka data dari klien (komentarKlien) akan ditambahkan ke areaTulis setelah itu sesi komunikasi akan ditutup.

/* SERVER */
public void layananServer() throws Exception
{
 String komentarKlien;
 ServerSocket Server = new ServerSocket (14144);
 while (true) {
  Socket connected = Server.accept();
  BufferedReader dataDariKlien = new BufferedReader(new InputStreamReader(connected.getInputStream()));
  while (true) {
   komentarKlien = dataDariKlien.readLine();
   if (komentarKlien != null) {
    areaTulis.setText(areaTulis.getText()+ "\n" + connected.getInetAddress().getHostAddress()+":"+connected.getPort() + " >> " + komentarKlien);
    areaTulis.setCaretPosition(areaTulis.getText().length()-1);
    connected.close();
    break;
   }
  }
 }
}

Adapun layanan server akan berjalan terus menerus pada thread tersendiri dalam menunggu inisiasi komunikasi dari klien.

// .....
Thread t = new Thread(new Runnable() {
 public void run() {
  try {
   layananServer();
  } catch (Exception ex) {
   System.out.println(">>>>> "+ex.getMessage());
  }
 }
});
t.start();
// .....

Langkah ketiga adalah membuat method yang mengimplementasikan proses client. Pada method ini akan diinisiasi komunikasi melalui socket (alamatIP:14144) untuk mengirimkan data komentar. Setelah pengiriman data maka komunikasi socket akan ditutup.

/* CLIENT */
public void prosesKlien (String alamatIP, String komentar) throws Exception
{
 Socket clientSocket = new Socket(alamatIP, 14144);
 PrintWriter outToServer = new PrintWriter(clientSocket.getOutputStream(),true);
 outToServer.println(komentar);
 clientSocket.close();
}

Kemudian implementasi eventListener untuk tombol “Kirim” (tombolKirim) dimana akan menambahkan teks pada areaTulis kemudian melakukan inisiasi prosesKlien() dalam suatu thread tersendiri.

private void tombolKirimActionPerformed(java.awt.event.ActionEvent evt) {
 areaTulis.setText(areaTulis.getText()+ "\n" + "Saya >> " + areaKomentar.getText());
 areaTulis.setCaretPosition(areaTulis.getText().length()-1);
 Thread t = new Thread(new Runnable() {
  public void run() {
   try {
    prosesKlien(alamatIPTujuan.getText(), areaKomentar.getText());
    areaKomentar.setText("");
   } catch (Exception ex) {
    System.out.println(">>>>> "+ex.getMessage());
   }
  }
 });
 t.start();
}

Berikut adalah gambaran aplikasi ketika dijalankan :

Runtime Aplikasi

Runtime Aplikasi

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s