Pemrograman Jaringan Python: Menguasai Socket dan Protokol Lanjutan
Halaman Sebelumnya Halaman Berikutnya
Python menyediakan dua tingkat akses ke layanan jaringan. Pada tingkat rendah, Anda dapat mengakses dukungan soket dasar dalam sistem operasi yang mendasarinya, yang memungkinkan Anda untuk mengimplementasikan klien dan server untuk protokol berorientasi koneksi dan tanpa koneksi.
Python juga memiliki perpustakaan yang menyediakan akses tingkat tinggi ke protokol jaringan tingkat aplikasi tertentu, seperti FTP, HTTP, dan sebagainya.
Bab ini memberikan pemahaman tentang konsep paling terkenal dalam Jaringan - Pemrograman Soket.
Apa itu Soket?
Soket adalah titik akhir dari saluran komunikasi dua arah. Soket dapat berkomunikasi dalam suatu proses, antara proses di mesin yang sama, atau antara proses di benua yang berbeda.
Soket dapat diimplementasikan melalui sejumlah jenis saluran yang berbeda: soket domain Unix, TCP, UDP, dan sebagainya. Perpustakaan socket menyediakan kelas spesifik untuk menangani transportasi umum serta antarmuka generik untuk menangani sisanya.
Soket memiliki kosakata sendiri −
| Sr.No. | Istilah & Deskripsi |
| 1 | Domain Famili protokol yang digunakan sebagai mekanisme transportasi. Nilai-nilai ini adalah konstanta seperti AF_INET, PF_INET, PF_UNIX, PF_X25, dan sebagainya. |
| 2 | type Jenis komunikasi antara dua titik akhir, biasanya SOCK_STREAM untuk protokol berorientasi koneksi dan SOCK_DGRAM untuk protokol tanpa koneksi. |
| 3 | protocol Biasanya nol, ini dapat digunakan untuk mengidentifikasi varian protokol dalam domain dan tipe. |
| 4 | hostname Pengidentifikasi antarmuka jaringan − Sebuah string, yang dapat berupa nama host, alamat bintang-belah ketak, atau alamat IPV6 dalam notasi titik dua (dan mungkin titik) Sebuah string "<broadcast>", yang menentukan alamat INADDR_BROADCAST. Sebuah string kosong, yang menentukan INADDR_ANY, atau Sebuah Integer, ditafsirkan sebagai alamat biner dalam urutan byte host. |
| 5 | port Setiap server menunggu klien yang memanggil pada satu atau lebih port. Port dapat berupa nomor port Fixnum, string yang berisi nomor port, atau nama layanan. |
Modul socket
Untuk membuat soket, Anda harus menggunakan fungsi socket.socket() yang tersedia dalam modul socket, yang memiliki sintaks umum −
s = socket.socket (socket_family, socket_type, protocol=0)
Berikut adalah deskripsi parameter −
socket_family − Ini adalah AF_UNIX atau AF_INET, seperti yang dijelaskan sebelumnya.
socket_type − Ini adalah SOCK_STREAM atau SOCK_DGRAM.
protocol − Ini biasanya diabaikan, default ke 0.
Setelah Anda memiliki objek socket, Anda dapat menggunakan fungsi yang diperlukan untuk membuat program klien atau server Anda. Berikut adalah daftar fungsi yang diperlukan −
Metode Soket Server
| Sr.No. | Metode & Deskripsi |
| 1 | s.bind() Metode ini mengikat alamat (pasangan nama host, nomor port) ke soket. |
| 2 | s.listen() Metode ini mengatur dan memulai TCP listener. |
| 3 | s.accept() Ini secara pasif menerima koneksi klien TCP, menunggu sampai koneksi tiba (blocking). |
Metode Soket Klien
| Sr.No. | Metode & Deskripsi |
| 1 | s.connect() Metode ini secara aktif memulai koneksi server TCP. |
Metode Soket Umum
| Sr.No. | Metode & Deskripsi |
| 1 | s.recv() Metode ini menerima pesan TCP |
| 2 | s.send() Metode ini mengirim pesan TCP |
| 3 | s.recvfrom() Metode ini menerima pesan UDP |
| 4 | s.sendto() Metode ini mengirim pesan UDP |
| 5 | s.close() Metode ini menutup soket |
| 6 | socket.gethostname() Mengembalikan nama host. |
Server Sederhana
Untuk menulis server Internet, kita menggunakan fungsi socket yang tersedia dalam modul socket untuk membuat objek soket. Objek soket kemudian digunakan untuk memanggil fungsi lain untuk menyiapkan server soket.
Sekarang panggil fungsi bind(hostname, port) untuk menentukan port untuk layanan Anda pada host yang diberikan.
Selanjutnya, panggil metode accept dari objek yang dikembalikan. Metode ini menunggu sampai klien terhubung ke port yang Anda tentukan, dan kemudian mengembalikan objek koneksi yang mewakili koneksi ke klien tersebut.
#!/usr/bin/python # Ini adalah file server.py import socket # Impor modul soket s = socket.socket() # Buat objek soket host = socket.gethostname() # Dapatkan nama mesin lokal port = 12345 # Cadangkan port untuk layanan Anda. s.bind((host, port)) # Ikuti ke port s.listen(5) # Sekarang tunggu koneksi klien. while True: c, addr = s.accept() # Buat koneksi dengan klien. print 'Got connection from', addr c.send('Thank you for connecting') c.close() # Tutup koneksi Klien Sederhana
Mari kita tulis program klien sangat sederhana yang membuka koneksi ke port 12345 dan host yang diberikan. Ini sangat mudah untuk membuat klien soket menggunakan fungsi modul socket Python.
Fungsi socket.connect(hosname, port ) membuka koneksi TCP ke hostname pada port. Setelah Anda memiliki soket terbuka, Anda dapat membaca darinya seperti objek IO apa pun. Selesai, ingat untuk menutupnya, seperti menutup berkas.
Kode berikut adalah klien sangat sederhana yang terhubung ke host dan port tertentu, membaca data apa pun yang tersedia dari soket, dan kemudian keluar −
#!/usr/bin/python # Ini adalah file client.py import socket # Impor modul soket s = socket.socket() # Buat objek soket host = socket.gethostname() # Dapatkan nama mesin lokal port = 12345 # Cadangkan port untuk layanan Anda. s.connect((host, port)) print s.recv(1024) s.close() # Tutup soket saat selesai
Sekarang jalankan server.py di latar belakang dan kemudian jalankan client.py di atas untuk melihat hasilnya.
# Ini akan memulai server di latar belakang. $ python server.py & # Setelah server dimulai jalankan klien sebagai berikut: $ python client.py
Ini akan menghasilkan hasil berikut −
Got connection from ('127.0.0.1', 48437) Thank you for connecting Modul Internet Python
Daftar beberapa modul penting dalam pemrograman Jaringan/Internet Python.
| Protokol | Fungsi Umum | Nomor Port | Modul Python |
| HTTP | Halaman web | 80 | httplib, urllib, xmlrpclib |
| NNTP | Berita Usenet | 119 | nntplib |
| FTP | Transfer berkas | 20 | ftplib, urllib |
| SMTP | Mengirim email | 25 | smtplib |
| POP3 | Mengambil email | 110 | poplib |
| IMAP4 | Mengambil email | 143 | imaplib |
| Telnet | Baris perintah | 23 | telnetlib |
| Gopher | Transfer dokumen | 70 | gopherlib, urllib |
Silakan periksa semua perpustakaan yang disebutkan di atas untuk bekerja dengan protokol FTP, SMTP, POP, dan IMAP.
Baca Lebih Lanjut
Ini adalah permulaan cepat dengan Pemrograman Soket. Ini adalah subjek yang luas. Disarankan untuk melalui tautan berikut untuk menemukan lebih banyak detail −