Python - Pemrograman Soket
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.
Soket adalah titik akhir dari saluran komunikasi dua arah. Soket dapat berkomunikasi dalam suatu proses, antara proses pada mesin yang sama, atau antar proses di benua yang berbeda. Kami menggunakan modul soket di python untuk membuat dan menggunakan soket.
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 -
|
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. |
The soket Modul
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 ditinggalkan, default ke 0.
Setelah Anda memiliki objek soket , maka Anda dapat menggunakan fungsi yang diperlukan untuk membuat program klien atau server Anda.
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 socket untuk membuat obyek socket. 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/python # This is server.py file
import socket # Import socket module
s = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345 # Reserve a port for your service.
s.bind((host, port)) # Bind to the port
s.listen(5) # Now wait for client connection.
while True:
c, addr = s.accept() # Establish connection with client.
print 'Got connection from', addr
c.send('Thank you for connecting')
c.close() # Close the connection
Klien Sederhana
Mari kita tulis program klien yang sangat sederhana yang membuka koneksi ke port tertentu 12345 dan host yang diberikan. Ini sangat sederhana untuk membuat klien soket menggunakan fungsi modul soket Python .
The socket.connect(hosname, port ) opens a TCP connection to hostname on the port. Once you have a socket open, you can read from it like any IO object. When done, remember to close it, as you would close a file.
The following code is a very simple client that connects to a given host and port, reads any available data from the socket, and then exits −
#!/usr/bin/python # This is client.py file
import socket # Import socket module
s = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345 # Reserve a port for your service.
s.connect((host, port))
print s.recv(1024)
s.close # Close the socket when done
Now run this server.py in background and then run above client.py to see the result.
# Following would start a server in background.
$ python server.py & # Once server is started run client as follows: $ python client.py
This would produce following result −
Got connection from ('127.0.0.1', 48437)
Thank you for connecting
Socket with Public URL
In the below example we use few methods from the socket module to find the address information of server and host name details.
import socket
from pprint import pprint
# get server address
addrinfo = socket.getaddrinfo('tutorialspoint.com', 'www')
pprint(addrinfo)
# get server hostname
print socket.gethostname()
When we run the above program, we get the following output −
[(2, 1, 0, '', ('94.130.81.180', 80))]
DESKTOP-JXYKQCPLP