Python 3 - Pemrograman Jaringan

Python menyediakan dua tingkat akses ke layanan jaringan. Pada level rendah, Anda dapat mengakses dukungan soket dasar di sistem operasi yang mendasarinya, yang memungkinkan Anda mengimplementasikan klien dan server untuk protokol berorientasi koneksi dan tanpa koneksi.

Python juga memiliki pustaka yang menyediakan akses tingkat lebih tinggi ke protokol jaringan tingkat aplikasi tertentu, seperti FTP, HTTP, dan sebagainya.

Bab ini memberi Anda pemahaman tentang konsep paling terkenal dalam Networking - Socket Programming.

Apa Sockets?

Soket adalah titik akhir dari saluran komunikasi dua arah. Soket dapat berkomunikasi dalam suatu proses, antar proses pada mesin yang sama, atau antar proses di benua yang berbeda.

Soket dapat diimplementasikan pada sejumlah jenis saluran yang berbeda: soket domain Unix, TCP, UDP, dan sebagainya. The soket perpustakaan menyediakan kelas khusus untuk menangani angkutan umum serta antarmuka generik untuk menangani sisanya.

Soket memiliki kosakata sendiri -

Sr.No. Istilah & Deskripsi
1

domain

Keluarga protokol yang digunakan sebagai mekanisme transportasi. Nilai-nilai ini adalah konstanta seperti AF_INET, PF_INET, PF_UNIX, PF_X25, dan seterusnya.

2

type

Jenis komunikasi antara dua titik akhir, biasanya SOCK_STREAM untuk protokol berorientasi sambungan dan SOCK_DGRAM untuk protokol tanpa sambungan.

3

protocol

Biasanya nol, ini dapat digunakan untuk mengidentifikasi varian protokol dalam domain dan tipe.

4

hostname

Pengenal antarmuka jaringan -

  • Sebuah string, yang dapat berupa nama host, alamat titik-titik, atau alamat IPV6 dengan tanda titik dua (dan mungkin titik)

  • String "<broadcast>", yang menentukan alamat INADDR_BROADCAST.

  • String panjang-nol, yang menentukan INADDR_ANY, atau

  • Integer, diartikan sebagai alamat biner dalam urutan byte host.

5

port

Setiap server mendengarkan klien yang memanggil satu atau lebih port. Port bisa berupa nomor port Fixnum, string yang berisi nomor port, atau nama layanan.

Modul Soket

Untuk membuat soket, Anda harus menggunakan fungsi socket.socket () yang tersedia di 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 ditinggalkan, default ke 0.

Setelah Anda memiliki objek soket , maka Anda dapat menggunakan fungsi yang diperlukan untuk membuat program klien atau server Anda. Berikut adalah daftar fungsi yang dibutuhkan -

Metode Soket Server

Sr.No. Metode & Deskripsi
1

s.bind()

Metode ini mengikat alamat (nama host, pasangan nomor port) ke soket.

2

s.listen()

Metode ini menyiapkan dan memulai pendengar TCP.

3

s.accept()

Ini secara pasif menerima koneksi klien TCP, menunggu sampai koneksi tiba (memblokir).

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 mengirimkan pesan TCP

3

s.recvfrom()

Metode ini menerima pesan UDP

4

s.sendto()

Metode ini mengirimkan pesan UDP

5

s.close()

Metode ini menutup soket

6

socket.gethostname()

Mengembalikan nama host.

Server Sederhana

Untuk menulis server Internet, kami menggunakan socketfungsi yang tersedia dalam modul soket untuk membuat objek soket. Objek soket kemudian digunakan untuk memanggil fungsi lain untuk menyiapkan server soket.

Sekarang panggil bind(hostname, port)berfungsi untuk menentukan port untuk layanan Anda pada host yang diberikan.

Selanjutnya, panggil metode terima dari objek yang dikembalikan. Metode ini menunggu hingga klien tersambung ke port yang Anda tentukan, lalu mengembalikan objek koneksi yang mewakili koneksi ke klien tersebut.

#!/usr/bin/python3           # This is server.py file
import socket                                         

# create a socket object
serversocket = socket.socket(
	        socket.AF_INET, socket.SOCK_STREAM) 

# get local machine name
host = socket.gethostname()                           

port = 9999                                           

# bind to the port
serversocket.bind((host, port))                                  

# queue up to 5 requests
serversocket.listen(5)                                           

while True:
   # establish a connection
   clientsocket,addr = serversocket.accept()      

   print("Got a connection from %s" % str(addr))
    
   msg = 'Thank you for connecting'+ "\r\n"
   clientsocket.send(msg.encode('ascii'))
   clientsocket.close()

Klien Sederhana

Mari kita tulis program klien yang sangat sederhana yang membuka koneksi ke port tertentu 12345 dan host tertentu. Sangat mudah untuk membuat klien soket menggunakan fungsi modul soket Python .

Itu socket.connect(hosname, port )membuka koneksi TCP ke nama host di porta . Setelah Anda membuka soket, Anda dapat membacanya seperti objek IO lainnya. Setelah selesai, ingatlah untuk menutupnya, karena Anda akan menutup file.

Contoh

Kode berikut adalah klien yang sangat sederhana yang terhubung ke host dan port tertentu, membaca data yang tersedia dari soket, dan kemudian keluar -

#!/usr/bin/python3           # This is client.py file

import socket

# create a socket object
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

# get local machine name
host = socket.gethostname()                           

port = 9999

# connection to hostname on the port.
s.connect((host, port))                               

# Receive no more than 1024 bytes
msg = s.recv(1024)                                     

s.close()
print (msg.decode('ascii'))

Sekarang jalankan server.py ini di latar belakang dan kemudian jalankan client.py di atas untuk melihat hasilnya.

# Following would start a server in background.
$ python server.py & 

# Once server is started run client as follows:
$ python client.py

Keluaran

Ini akan menghasilkan hasil sebagai berikut -

on server terminal
Got a connection from ('192.168.1.10', 3747)
On client terminal
Thank you for connecting

Modul Internet Python

Daftar beberapa modul penting dalam pemrograman Jaringan / Internet Python diberikan di bawah ini -

Protokol Fungsi umum Port No. Modul Python
HTTP Halaman web 80 httplib, urllib, xmlrpclib
NNTP Berita Usenet 119 nntplib.dll
FTP Transfer file 20 ftplib, urllib
SMTP Mengirim email 25 smtplib.dll
POP3 Mengambil email 110 poplib
IMAP4 Mengambil email 143 imaplib.dll
Telnet Baris perintah 23 telnetlib.dll
Menggali Transfer dokumen 70 gopherlib, urllib

Harap periksa semua pustaka yang disebutkan di atas untuk bekerja dengan protokol FTP, SMTP, POP, dan IMAP.

Bacaan Lebih Lanjut

Ini adalah awal yang cepat dengan Pemrograman Socket. Ini adalah topik yang sangat luas. Dianjurkan untuk melihat tautan berikut untuk menemukan lebih detail -

  • Pemrograman Soket Unix .

  • Pustaka dan Modul Soket Python .