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 -

  • Sebuah string, yang bisa 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.

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