Last Updated on July 1, 2022 by
Socket programming adalah cara menghubungkan perangkat dalam jaringan demi mempermudah komunikasi atau transfer data. Bagaimana cara memprogram koneksi socket di Python?
Akses masuk ke layanan jaringan di Python terdiri atas dua tingkatan yang berbeda. Pada tingkat yang lebih rendah, Anda bisa mengakses sistem basic socket yang mendasari operasi kode Python.
Metode ini juga memungkinkan implementasi perangkat klien dengan server untuk menciptakan sambungan protokol berbasis koneksi (connection-oriented) ataupun tidak (connectionless).
Python juga memiliki pustaka yang menyediakan akses ke tingkat yang lebih tinggi. Metode ini biasanya digunakan untuk mengakses protokol jaringan pada aplikasi tertentu, seperti FTP, HTTP, dan lain-lain.
Mari simak ulasan Python basic berikut ini untuk mengetahui lebih dalam seputar socket programming.
Table of Contents
Apa Itu Socket Programming?
Socket adalah titik akhir dari saluran komunikasi dua arah. Setiap socket dalam Python dapat berkomunikasi mengirimkan data baik dalam satu arus proses; dua atau lebih proses yang berlainan dalam mesin yang sama; atau antar proses pemrograman di mesin yang berseberangan.
Socket pun bisa diimplementasikan pada banyak tipe channel sekaligus, seperti Unix domain sockets, UDP, TCP, dan sejenisnya. Perpustakaan socket memuat banyak kategori khusus untuk menangani beragam tipe komunikasi, serta sistem antarmuka general bagi tugas-tugas lain.
Socket memiliki kamus kode dengan arti khusus seperti yang tertera di bawah ini:
No | Istilah Socket dan Artinya |
1 | Domain
Grup protokol yang berperan dalam mekanisme pengiriman data. Nilai-nilai dalam kelompok ini berupa konstanta seperti AF_INET, PF_UNIX, PF_INET, PF_X25 dan lain-lain. |
2 | type
Jenis komunikasi antara dua titik akhir tunnel, biasanya ada SOCK_STREAM yang digunakan untuk protokol berorientasi koneksi; dan SOCK_DGRAM untuk protokol tanpa koneksi. |
3 | protocol Biasanya berupa data nol. Protocol dapat digunakan untuk mengidentifikasi varian protokol dalam beragam domain dan jenis. |
4 | hostname
Merupakan penanda antarmuka sebuah jaringan yang terdiri atas: · String: dapat berupa nama host, alamat quad bertitik, atau alamat IPV6 dalam notasi titik dua atau satu (dot). · String “<broadcast>”: berfungsi mengidentifikasi alamat INADDR_BROADCAST. · Zero-length string: mengidentifikasi INADDR_ANY. · Integer: ditafsirkan sebagai alamat biner dalam urutan byte host. |
5 | port Setiap server dapat menangkap sinyal klien saat memanggil satu atau beberapa port sekaligus. Port dapat berupa nomor port Fixnum, string yang berisi nomor port, atau nama layanan. |
Python Basic : Modul Socket Programming
Untuk membuat sebuah socket, Anda harus menggunakan fungsi socket.socket() yang tersedia di modul. Adapun susunan sintaksis umum socket programming adalah:
s = socket.socket (socket_family, socket_type, protocol=0)
Keterangan dari setiap elemen di atas adalah:
- socket_family: gunakan antara AF_UNIX atau AF_INET seperti yang sudah dijelaskan sebelumnya.
- socket_type: gunakan SOCK_STREAM atau SOCK_DGRAM.
- protocol: biasanya bagian ini dibiarkan kosong atau bernilai default
Setelah membuat objek socket, kini Anda bisa menggunakan fungsi yang dibutuhkan untuk membuat program klien atau server. Berikut ini adalah daftar fungsi-fungsi tersebut:
Metode Server Socket Programming
No | Metode Server Socket dan Definisinya |
1 | s.bind()
Metode ini dipakai untuk mengikat alamat (nama host, pasangan nomor port) ke soket. |
2 | s.listen()
Metode ini digunakan untuk menyiapkan dan memulai TCP listener. |
3 | s.accept()
Metode ini secara pasif menerima koneksi dari klien TCP, lalu menunggu sampai koneksi tiba (memblokir). |
Metode Programming Client Socket
No | Metode Client Socket dan Definisinya |
1 | s.connect()
Metode ini memulai koneksi server TCP secara aktif. |
Metode General Socket
No | Metode General Socket dan Definisinya |
1 | s.recv()
Metode yang digunakan untuk menerima pesan TCP. |
2 | s.send()
Metode yang digunakan untuk mentransmisikan pesan TCP. |
3 | s.recvfrom()
Metode yang digunakan untuk menerima pesan UDP. |
4 | s.sendto()
Metode yang digunakan untuk mentransmisikan pesan UDP. |
5 | s.close()
Metode untuk menutup socket. |
6 | socket.gethostname()
Metode untuk mengembalikan nama host. |
Contoh Simple Server
Gunakan fungsi socket yang tersedia di modul pembuatan objek socket untuk menulis server Internet sederhana (simple server). Objek socket digunakan untuk memanggil fungsi lain yang mengatur kinerja server.
Kemudian, jalankan fungsi bind(hostname, port) untuk menentukan port layanan Anda yang tertera di host.
Lalu panggil metode accept dari objek yang dikembalikan. Metode ini akan menunggu hingga klien tersambung ke port yang telah ditentukan, lalu mengembalikan objek koneksi yang mewakili sambungan ke klien. Contoh kode pemrogramannya adalah sebagai berikut:
#!/usr/bin/python # Ini adalah server.py file. import socket # Mengimpor socket module. s = socket.socket() # Membuat socket object. host = socket.gethostname() # Mendapatkan local machine name. port = 12345 # Pesan port untuk layanan Anda. s.bind((host, port)) # Mengikat ke port. s.listen(5) # Menunggu koneksi client. while True: c, addr = s.accept() # Menyetabilkan koneksi dengan client. print 'Got connection from', addr c.send('Thank you for connecting') c.close() # Menutup koneksi.
Contoh Simple Client
Setelah sukses dengan pemrograman server, mari lanjutkan dengan menulis pemrograman klien (client) yang sederhana memakai modul socket Python. Kode berikut ini ditujukan untuk membuka koneksi ke port 12345 dan host yang telah ditentukan.
Kode socket.connect(hosname, port) membuka koneksi TCP ke hostname pada port. Setelah soket terbuka, Anda dapat membacanya seperti objek IO lainnya. Jika sudah, ingatlah untuk menutupnya sebagaimana Anda akan menutup file biasa.
Kode berikut merupakan contoh klien sederhana yang terhubung ke host dan port tertentu, bisa membaca data pun yang tersedia di soket dan menutupnya:
#!/usr/bin/python # Ini adalah client.py file. import socket # Mengimpor socket module. s = socket.socket() # Membuat socket object. host = socket.gethostname() # Mendapatkan local machine name. port = 12345 # Pesan port untuk layanan Anda. s.connect((host, port)) print s.recv(1024) s.close() # Menutup socket sesudah selesai.
Sekarang jalankan server.py ini di latar belakang, lalu jalankan di atas client.py untuk melihat hasilnya.
# Kode untuk menjalankan server di latar belakang: $ python server.py & # Kode klien yang dijalankan begitu server aktif: $ python client.py
Hasil akhirnya akan muncul seperti ini:
Got connection from ('127.0.0.1', 48437) Thank you for connecting
Modul Programming Internet Python
Inilah beberapa modul penting yang digunakan dalam pemrograman internet/network di Python:
Protokol | Fungsi Umum | No Port | Modul Python |
HTTP | Halaman website | 80 | httplib, urllib, xmlrpclib |
Telnet | Baris perintah | 23 | telnetlib |
SMTP | Mengirim email | 25 | smtplib |
FTP | Transfer/kirim file | 20 | ftplib, urllib |
NNTP | Usenet news | 119 | nntplib |
Gopher | Transfer/kirim dokumen | 70 | gopherlib, urllib |
IMAP4 | Mengambil email | 143 | imaplib |
POP3 | Mengambil email | 110 | poplib |
Catatan penting: sangat dianjurkan untuk mengecek semua rincian pustaka di atas ketika Anda bekerja dengan protokol SMTP, FTP, IMAP dan POP.
Demikianlah pembahasan Python basic kali ini seputar socket programming. Semoga ulasan di atas bermanfaat menambah wawasan Anda, ya.
Yuk cari tahu lebih banyak tips dan tutorial programming gratis hanya di CODEKEY. Baca sekarang artikel-artikelnya hanya di https://codekey.id/. Sampai bertemu lagi!
Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.