GNU/Linux >> Belajar Linux >  >> Linux

Cara:Pemrograman Socket dengan Python

Pengantar

Pemrograman jaringan dan komunikasi adalah penggunaan yang sangat kuat dari bahasa pemrograman apa pun. Hal ini jauh lebih umum hari ini untuk komputer untuk antarmuka dengan satu sama lain (atau dengan seluruh jaringan, seperti Internet) daripada mesin untuk bertindak sendiri, dan mengetahui persis bagaimana komunikasi itu terjadi adalah keterampilan penting untuk setiap programmer. Jika Anda adalah penggemar Python, Anda mungkin menyadari bahwa Python memiliki beberapa pustaka lengkap yang dirancang untuk membuat pemrograman jaringan menjadi sederhana.
.

Prasyarat

  • Versi Python apa pun (Lihat Panduan kami untuk menginstal Python 2.7 di Centos)
  • Pemahaman dasar tentang Python

Soket

Salah satu library impor yang paling mendasar dan berguna adalah socket Perpustakaan. Ini memungkinkan programmer untuk mendefinisikan, membuat, menggunakan, dan menghancurkan koneksi jaringan yang dikenal sebagai soket .

Jadi apa sebenarnya itu sebuah soket? Dalam istilah jaringan, soket adalah titik akhir koneksi, yang ditentukan oleh alamat IP dan nomor port. Koneksi menggunakan sepasang soket:sumber dan tujuan.

Program biasanya menggunakan soket untuk memungkinkan dua komputer berkomunikasi. Soket juga dapat digunakan untuk melewatkan data antara aplikasi yang berbeda atau bahkan bagian yang berbeda dari program yang sama. Kami dapat mendemonstrasikan bagaimana soket bekerja dengan dua aplikasi atau dua bagian terpisah dari aplikasi yang sedang berjalan:bagian server, yang mendengarkan koneksi, dan bagian klien, yang mencoba menyambung ke server. Ketika komputer Anda meminta halaman web, misalnya, ia membuka soket, biasanya mengikatnya ke port 80 (untuk HTTP), dan terhubung ke server web, menggunakan port dan pengidentifikasi soket yang sama. Semua komunikasi terkait melewati titik akhir itu. Ketika komunikasi selesai, klien menutup soket dan koneksi yang terikat.

Pustaka soket di Python dikembangkan dengan baik dan mudah digunakan. Untuk menggunakan perpustakaan, letakkan import socket di awal program Anda. Perintah ini memberi program Anda akses ke semua fungsi yang disertakan dalam pustaka soket, seperti socket() (buat objek socket baru), socketpair() (buat sepasang objek soket baru), dan gethostbyname() (petakan nama host ke alamat IP-nya), untuk beberapa nama.
.

Bereksperimen dengan Perpustakaan Soket

Untuk bereksperimen dengan soket di mesin lokal kami, kami akan menulis skrip Python untuk membuat aplikasi server yang membuat soket terbuka. Kemudian kami akan menjalankan kode itu dan, di jendela terminal lain, telnet ke mesin lokal kami (di localhost) menggunakan port yang kami buka di skrip server.

Mari kita mulai dengan skrip yang akan kita panggil server.py . Program ini akan membuka soket, mengikatnya ke port dan protokol, lalu mendengarkan koneksi.

import socket # (1)  
host = '' # (2)  
port = 1234 # (3)  

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # (4)  
s.bind((host, port)) # (5)  

print 'Socket created' # (6)  
s.listen(10) # (7)  
print 'Socket listening' # (8)  

conn, addr = s.accept() # (9)  

print 'Connected with ' + addr[0] + ':' + str(addr[1]) # (10)  

Simpan file ini sebagai server.py . Di jendela terminal (atau pada prompt perintah, jika Anda menggunakan Windows), navigasikan ke lokasi file Anda dan jalankan.

python server.py

Biarkan berjalan dan buka jendela terminal kedua. Di jendela itu, mulai koneksi telnet ke localhost pada port 1234.

telnet localhost 1234

Setelah terhubung, Anda akan melihat jendela terminal asli mencetak 'Connected with 127.0.0.1:60426' atau yang serupa, sementara jendela klien Anda akan menampilkan sebentar 'Connected to localhost' sebelum koneksi berakhir.
.

Apa yang Dilakukan Kode Soket

Jadi apa yang terjadi di sini? Mari kita lihat setiap baris:

Baris (1) mengimpor socket perpustakaan dan membuatnya tersedia untuk digunakan. Baris (2) dan (3) mengatur variabel untuk host dan port , masing-masing. host yang kosong variabel (itu adalah string kosong yang dikelilingi oleh tanda kutip tunggal, kebetulan, BUKAN tanda kutip ganda) berarti aplikasi server akan mendengarkan semua antarmuka yang tersedia, termasuk localhost, yang akan kita gunakan untuk terhubung.

Baris (4) membuat soket itu sendiri, menggunakan dua parameter. Parameter pertama, AF_INET , berarti kami menggunakan alamat IPv4 (sebagai lawan dari alamat IPv6). Parameter kedua, SOCK_STREAM , artinya socket ini akan menggunakan paket TCP (lalu lintas UDP menggunakan tipe SOCK_DGRAM dan bekerja sedikit berbeda-tapi itu di luar cakupan artikel ini). Baris (5) mengikat soket yang telah kita buat ke (host, port) tupel.

Baris (7) memberitahu program untuk mendengarkan koneksi ke soket yang kita ikat pada baris (5). 10 parameter menunjukkan bahwa server akan menerima hingga 10 koneksi sebelum menolak klien.

Baris (9) memberikan variabel ke koneksi setelah server menerima koneksi. Baris (10) mencetak alamat IP dan nomor port klien yang telah melakukan koneksi dengan server.
.

Menjaga Soket Terbuka

Ketika kami menguji kode ini, kami melihat bahwa server segera menutup koneksi, yang tidak terlalu membantu. Agar kami dapat melihat data yang ditransfer bolak-balik melalui koneksi, kami akan menambahkan empat baris kode ke server.py kami program.

data = conn.recv(1024) # 11  
conn.sendall(data) # 12  
conn.close() # 13  
s.close() # 14  

Sekali lagi, jika Anda menjalankan kode ini di jendela terminal, lalu sambungkan (dari terminal lain) dengan telnet localhost 1234 , Anda akan terhubung ke localhost, tetapi kali ini koneksi akan tetap terbuka. Ketikkan kata ke dalam jendela telnet lalu tekan Return; kata tersebut akan digaungkan kembali ke layar yang sama, dan kemudian koneksi akan ditutup.

Pada baris (11), data variabel menyimpan data yang diterima melalui koneksi.

Baris (12) mengirimkan data itu kembali melalui koneksi kembali ke klien—dengan kata lain, menggemakannya.

Terakhir, baris (13) dan (14) berlatih sedikit pembersihan dengan menutup koneksi dan menghancurkan soket–bukanlah ide yang buruk, terutama saat mengkodekan aplikasi berbasis soket yang akan dirilis ke alam liar.
.

Kesimpulan

Skrip ini adalah contoh yang sangat mendasar tentang cara membuat koneksi jaringan menggunakan socket Python modul, berkomunikasi melalui koneksi, lalu tutup lagi. Meskipun aplikasi dewasa akan jauh lebih rumit, struktur komunikasi dasar–dan teori di baliknya–tetap sama.

Kami harap Anda menikmati tutorial ini dan telah cukup belajar untuk memulai bekerja dengan soket di Python. Pastikan untuk memeriksa kembali tutorial lainnya, dan untuk melihat solusi hosting VPS kami yang andal.
.
.


Linux
  1. Cara menginstal Python di Linux

  2. Cara Menginstal NumPy

  3. Cara Meningkatkan Python ke 3.9

  1. Cara Menginstal Python 3 di Ubuntu 18.04 atau 20.04

  2. Cara Menginstal Python 3 di Windows 10

  3. Cara Berkomentar dengan Python

  1. Cara Menginstal Python 3.7 di Ubuntu 18.04

  2. Cara Menginstal Python 3.8 di Ubuntu 18.04

  3. Cara Menginstal Python 3.9 di Ubuntu 20.04