Simple Client-Server Programming

Posted on Updated on

Client - Server Architecture

Saat ini client-server merupakan sebuah arsitektur di mana ada lebih dari 1 komputer berkomunikasi mengirimkan data satu sama lain. Arsitektur client – server melibatkan minimal 1 server dan 1 client untuk saling berkomunikasi. Server berfungsi sebagai pihak yang merespons apa yang dikirim client, sedangkan client merupakan sisi yang meminta data sesuai dengan permintaan user. Implementasi sistem client-server ini banyak diterapkan, baik di lingkungan pendidikan, industri, maupun hiburan.

Arsitektur client-server ini dapat diimplementasikan pada sisi hardware maupun software. Pada sisi hardware, implementasi yang bisa dilakukan adalah dengan cara mengkoneksikan beberapa komputer. Sedangkan pada sisi software, banyak cara yang bisa diimplementasikan, salah satunya adalah menggunakan pemrograman socket, di mana 2 program yang berbeda berkomunikasi menggunakan socket yang ditempelkan pada port yang tertempel di masing-masing sisi, baik client maupun server.

Kali ini saya akan menjelaskan tentang pemrograman client-server menggunakan bahasa pemrograman python. Python menyediakan kemudahan dalam pembuatan aplikasi client-server. Saya akan mencontohkan program sederhana menggunakan python dengan skenario sebagai berikut :

Ada 2 program yang saling berkomunikasi satu sama lain, di mana masing-masing berperan sebagai client dan server. Pada sisi client, setiap kali kita mengetikkan perintah “Hello Server”, maka server akan membalas dengan jawaban “Hello juga”. Jika client mengatakan “Selamat pagi server”, server akan membalas dengan jawaban “Selamat pagi juga”. Jika client mengatakan “Apa Kabar?”, server menjawab dengan jawaban “Baik-baik saja”. Jika diilustrasikan menjadi seperti berikut :

Arsitektur Client-Server

Langkah pertama yang dilakukan adalah membuat sisi server terlebih dahulu. Tipe koneksi yang digunakan di sini menggunakan TCP, dikarenakan membutuhkan interaksi yang terus menerus antara client dan server. Source code server dapat dilihat di sini.

#!/usr/bin/env python
#impor modul socket
import socket

#menentukan alamat server
server_address = ('localhost',4999)

#ukuran buffer ketika menerima pesan
SIZE = 1024

#membuat objek socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#bind ke alamat server
s.bind(server_address)

#mendengarkan koneksi dari client
s.listen(5)

#siap menerima pesan terus-menerus dari client
while 1 :
 print "Waiting for connection"

 #menerima koneksi dari client
 client, client_address = s.accept()

 print "Connected from : ", client_address

 while 1 :
 #menerima pesan dari client
 message = client.recv(SIZE)
 if(message == "1"):
 balik = "Hello juga"
 elif(message == "2"):
 balik = "Selamat pagi juga"
 elif(message == "3"):
 balik = "Baik-baik saja"
 else :
 balik = "Tidak ada apa-apa"

 #jika tidak ada pesan, keluar dari while
 if not message: break
 print message

 #mengirimkan kembali pesan ke client
 client.send(balik)

 #menutup client
 client.close()

#menutup socket
s.close()

Sedangkan untuk sisi client, sourcodenya adalah sebagai berikut :

#!/usr/bin/env python

#impor modul socket
import socket

#menentukan alamat server
server_address = ('localhost', 4999)

#ukuran buffer ketika menerima pesan
SIZE = 1024

#membuat objek socket (proses pertama)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#koneksi server (proses kedua)
s.connect(server_address)

print "1. Hello Server"
print "2. Selamat Pagi Server"
print "3. Apa Kabar?"
print "0. Keluar?"

while 1:
 bilangan = raw_input("Pilih Bilangan : ")
 if not bilangan : break

 #mengirim pesan ke server (proses ketiga)
 s.send(bilangan)

 #menerima pesan dari server
 message = s.recv(SIZE)

 if not bilangan : break
 print message

s.close()

Hasil dari program ini adalah sebagai berikut :

Server Side
Server Side
Client Side
Client Side

Artikel selanjutnya akan dibahas aplikasi-aplikasi yang dibangun dengan menggunakan Python.. 🙂

Iklan

2 thoughts on “Simple Client-Server Programming

    home said:
    6 Desember 2012 pukul 22:01

    Great article! This is the kind of information that are supposed to be shared around the internet.

    Disgrace on the search engines for not positioning this submit higher!
    Come on over and discuss with my website . Thanks =)

    Veru said:
    2 April 2015 pukul 05:45

    Penjelasan yg singkat padat dan jelas.
    Menarik sekali
    Terima kasih telah berbagi

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