0% menganggap dokumen ini bermanfaat (0 suara)
51 tayangan5 halaman

Studiawan

Dokumen ini menjelaskan cara membuat program client-server sederhana menggunakan socket di Python. Terdapat tiga proses utama yaitu client mengirim pesan, server menerima pesan, dan server mengirim kembali pesan ke client. Program client membuat socket, terhubung ke server, mengirim pesan, dan menerima balasan. Program server membuat socket, menerima koneksi, menerima dan mengirim pesan secara terus-menerus sampai tidak ada pesan lagi.
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
51 tayangan5 halaman

Studiawan

Dokumen ini menjelaskan cara membuat program client-server sederhana menggunakan socket di Python. Terdapat tiga proses utama yaitu client mengirim pesan, server menerima pesan, dan server mengirim kembali pesan ke client. Program client membuat socket, terhubung ke server, mengirim pesan, dan menerima balasan. Program server membuat socket, menerima koneksi, menerima dan mengirim pesan secara terus-menerus sampai tidak ada pesan lagi.
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 5

Pemrograman Jaringan Sederhana di Python

2011-12-18 14:12:40 stu

Oke, mari kita masuk ke acara inti. Kita akan membuat sebuah program client-server sederhana di
Python. Pemrograman semacam ini biasanya disebut dengan pemrograman socket. Jadi nanti kita akan
menggunakan modul Python yang bernama socket. Sebuah modul di Python bisa di-load pada program
kita dengan menggunakan perintah import. Jika lupa beberapa istilah pemrograman jaringan, client, atau
server, silakan baca kembali tulisan sebelumnya. Sebelum melanjutkan membaca, atur posisi duduk
Anda dulu, buat senyaman mungkin :D. Lalu bagaimana contoh programnya?

Ada sebuah video menarik tentang bagaimana sebenarnya jaringan komputer bekerja. Sepertinya
pemahaman tentang jaringan ini akan mempermudah kita dalam memprogram nantinya. Silakan dicek
videonya di YouTube. Jadi YouTube bisa buat belajar juga lho, tidak cuma untuk melihat Shinta & Jojo,
Nurman Kamaru, atau Ayu Ting Ting :P.

Oke, sebelum memprogram, kita harus tahu alur ceritanya dulu bukan? Begini ceritanya. Client akan
mengirimkan sebuah pesan dengan tipe data string kepada server. Kemudian server akan menerimanya,
kemudian mengirimkannya kembali ke client. Perhatikan bahwa di sini ada tiga proses utama: client
mengirim, server menerima, dan server mengirim kembali pesan.

Mari kita mulai melihat proses utama dari sisi client terlebih dulu.

1. Pertama, client membuat objek socket terlebih dulu


2. Kedua, client mengoneksikan dirinya ke server
3. Baru kemudian melakukan proses mengirim (send) atau menerima (receive) pesan dari server

Oke, kita lihat program client sederhana ini.

#!/usr/bin/env python

# mengimpor modul socket


import socket

# menentukan alamat server


server_address = ('localhost', 5000)

# ukuran buffer ketika menerima pesan


SIZE = 1024

# membuat objek socket (proses pertama)


s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# koneksi ke server (proses kedua)


s.connect(server_address)

# mengirim pesan ke server (proses ketiga)


s.send("Hi server ... ")

# menerima pesan dari server


message = s.recv(SIZE)

# mencetak pesan dari server


print message

# menutup socket
s.close()
Mari kita lihat satu per satu bagian program ini. Sebelumnya, ada catatan menarik tentang notasi #! di
baris pertama program ini. Silakan disimak lebih lanjut di halaman Wikipedia ini. Tahap pertama adalah
mengimpor modul socket. Modul ini digunakan untuk memanipulasi berbagai hal yang berkaitan dengan
socket.

# mengimpor modul socket


import socket

Selanjutnya, adalah inisialisasi dua variabel yaitu alamat server (server_address) dan ukuran buffer
(SIZE). Perhatikan bahwa alamat server dibuat dengan tipe data tuple.

# menentukan alamat server


server_address = ('localhost', 5000)

# ukuran buffer untuk menerima pesan


SIZE = 1024

Elemen pertama variabel server_address menunjukkan alamat server dengan tipe data string, sedangkan
elemen kedua adalah port yang digunakan pada server dengan tipe data integer. localhost menunjukkan
bahwa server berada di komputer yang sama dengan client. Jika alamat ini dikosongi seperti ini: , maka
artinya sama dengan localhost. Nomor port dipilih sesuai dengan nomor port yang kosong di komputer
Anda. Ukuran buffer mempunyai satuan byte. Anda bisa mengubahnya sesuai dengan kebutuhan. Bisa
mulai dari 256, 512, 1024, 2048, dan seterusnya asalkan masih dalam kelipatan dua.

Proses selanjutnya adalah membuat objek socket. Ini adalah proses pertama yang merupakan bagian
proses utama yang terjadi di sisi client.

# membuat objek socket (proses pertama)


s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

AF_INET adalah keluarga socket untuk komunikasi antara client dan server yang bisa berada di host yang
sama atau berbeda. AF_INET hanya mendukung IPv4. Parameter kedua adalah SOCK_STREAM yang
artinya adalah program ini menggunakan protokol TCP bukan UDP. Jika menggunakan UDP, maka
parameternya adalah SOCK_DGRAM. Dokumentasi lengkap tentang socket bisa dilihat di sini. Di sisi
client, s disebut dengan socket client.

Langkah selanjutnya adalah mengoneksikan client ke server.

# koneksi ke server (proses kedua)


s.connect(server_address)

Koneksi ke server dilakukan sesuai dengan alamat dan port yang telah didefinisikan sebelumnya.
Perhatikan bahwa ini adalah proses kedua dari proses utama yang terjadi di sisi client. Setelah itu, client
mengirim pesan ke server.

# mengirim pesan ke server (proses ketiga)


s.send("Hi server ... ")

Perhatikan juga bahwa ini adalah proses ketiga dari bagian proses utama pada client. Sintaks Python
memang dirancang untuk mudah sekali dimengerti. Misalnya sintaks mengirim adalah send, sedangkan
menerima sintaksnya adalah recv. Tidak ada alasan untuk susah mengerti sintaks Python bukan? :D.
Pesan yang diterima dari server disimpan di variabel message untuk selanjutnya dicetak.

# menerima pesan dari server


message = s.recv(SIZE)

# mencetak pesan dari server


print message

Terakhir adalah menutup socket yang telah digunakan.

# menutup socket
s.close()

Sampai di sini ada pertanyaan? Silakan post komentar atau mengirim ke email saya atau boleh juga
ditanyakan di kelas :D.

Kita lanjutkan ke sisi server. Sedikit berbeda dengan client, program dari sisi server harus melakukan
bind, listen, dan accept. Secara umum, proses utama yang terjadi di sisi server adalah sebagai berikut

1. Server membuat objek socket terlebih dulu


2. Bind ke alamat yang ditentukan
3. Mendengarkan (listen) apakah ada koneksi yang masuk
4. Menerima koneksi (accept) dari client
5. Menerima pesan dari client (recv)
6. Melakukan suatu proses
7. Mengirimkan hasil proses ke client (send)

Kita lihat dulu contoh programnya, baru kita cek satu per satu bagian programnya.

#!/usr/bin/env python

# mengimpor modul socket


import socket

# menentukan alamat server


server_address = ('localhost', 5000)

# 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(1)

# siap menerima pesan terus-menerus dari client


while 1:
# menerima koneksi dari client
client, client_address = s.accept()
# menerima pesan dari client
message = client.recv(SIZE)

# jika tidak ada pesan, keluar dari while


if not message:
break

# mengirimkan kembali pesan ke client


client.send(message)

# menutup socket
s.close()

Di sisi server ini, program diawali dengan cara yang sama seperti di sisi client. Mulai dari impor modul
socket, menentukan alamat server, menentukan ukuran buffer, dan membuat objek socket. Kita langsung
ke bagian yang berbeda. Pertama adalah proses bind ke alamat dan port yang telah ditentukan

# bind ke alamat server


s.bind(server_address)

Istilah bind di sini bisa diartikan sebagai pengaturan alamat dan port server. Jadi, alamat dan port yang
telah dideklarasikan tersebut, ditempelkan pada objek socket server. Di sisi server, s disebut dengan
socket server. Langkah selanjutnya adalah mendengarkan koneksi dari client.

# mendengarkan koneksi dari client


s.listen(1)

Terdapat satu parameter pada listen yang biasa disebut dengan backlog yang artinya adalah jumlah
maksimum antrian koneksi. Karena di sini kita masih mencoba contoh yang sederhana, jadi kita set
jumlah antriannya satu saja. Berikutnya adalah menerima koneksi dari client.

# menerima koneksi dari client


client, client_address = s.accept()

Return value dari accept ada dua yaitu objek socket client (ditunjukkan dengan variabel client) dan alamat
client (variabel client_address). Jadi di sisi server, socket server ditunjukkan dengan variabel s dan
socket client ditunjukkan oleh variabel client. Ingat-ingat konsep ini karena akan kita gunakan pada bagian
berikutnya :D.

Berikutnya adalah server menggunakan infinite loop untuk menerima pesan dari client. Kemudian server
mengirimkan pesan kembali ke client.

# siap menerima pesan terus-menerus dari client


while 1:
# menerima pesan dari client
message = client.recv(SIZE)

# jika tidak ada pesan, keluar dari while


if not message:
break

# mengirimkan kembali pesan ke client


client.send(message)

Jika tidak ada lagi pesan yang diterima, maka keluar dari looping dan socket server ditutup.

# menutup socket
s.close()

Silakan langsung dicoba

Anda mungkin juga menyukai