Cộng đồng chia sẻ tri thức Lib24.vn

Python - Lập trình mạng

Gửi bởi: Phạm Thọ Thái Dương 20 tháng 2 2020 lúc 10:47:31


Mục lục
* * * * *

Python cung cấp hai cấp độ truy cập vào các dịch vụ mạng. Ở mức độ thấp, bạn có thể truy cập hỗ trợ ổ cắm cơ bản trong hệ điều hành cơ bản, cho phép bạn triển khai máy khách và máy chủ cho cả giao thức hướng kết nối và không kết nối.

Python cũng có các thư viện cung cấp quyền truy cập cấp cao hơn vào các giao thức mạng cấp ứng dụng cụ thể, chẳng hạn như FTP, HTTP, v.v.

Chương này cung cấp cho bạn sự hiểu biết về khái niệm nổi tiếng nhất trong Mạng - Lập trình ổ cắm.

Ổ cắm là gì?

Ổ cắm là điểm cuối của kênh truyền thông hai chiều. Các ổ cắm có thể giao tiếp trong một quy trình, giữa các quy trình trên cùng một máy hoặc giữa các quy trình trên các lục địa khác nhau.

Các socket có thể được triển khai trên một số loại kênh khác nhau: socket miền Unix, TCP, UDP, v.v. Các ổ cắm thư viện cung cấp các lớp cụ thể để xử lý các tàu vận tải thông thường cũng như một giao diện chung để xử lý phần còn lại.

Ổ cắm có vốn từ vựng riêng -

Các ổ cắm module

Để tạo một ổ cắm, bạn phải sử dụng hàm socket.socket () có sẵn trong mô đun ổ cắm , có cú pháp chung -

s = socket.socket (socket_family, socket_type, protocol=0)

Dưới đây là mô tả của các tham số -

  1. socket_f Family - Đây là AF_UNIX hoặc AF_INET, như đã giải thích trước đó.
  2. socket_type - Đây là SOCK_STREAM hoặc SOCK_DGRAM.
  3. giao thức - Điều này thường bị bỏ qua, mặc định là 0.

Khi bạn có đối tượng socket , sau đó bạn có thể sử dụng các chức năng cần thiết để tạo chương trình máy khách hoặc máy chủ của mình. Sau đây là danh sách các chức năng cần thiết -

Phương pháp ổ cắm máy chủ

Phương thức socket của khách hàng

Phương pháp ổ cắm chung

Một máy chủ đơn giản

Để ghi các máy chủ Internet, chúng tôi sử dụng chức năng ổ cắm có sẵn trong mô đun ổ cắm để tạo đối tượng ổ cắm. Một đối tượng socket sau đó được sử dụng để gọi các chức năng khác để thiết lập một máy chủ socket.

Bây giờ hãy gọi hàm bind (tên máy chủ, cổng) để chỉ định một cổng cho dịch vụ của bạn trên máy chủ đã cho.

Tiếp theo, gọi phương thức chấp nhận của đối tượng trả về. Phương thức này đợi cho đến khi máy khách kết nối với cổng bạn đã chỉ định và sau đó trả về một đối tượng kết nối đại diện cho kết nối đến máy khách đó.

#!/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

Một khách hàng đơn giản

Hãy để chúng tôi viết một chương trình máy khách rất đơn giản, mở ra một kết nối đến một cổng 12345 nhất định và máy chủ đã cho. Điều này rất đơn giản để tạo một máy khách ổ cắm bằng chức năng mô đun ổ cắm của Python .

Các socket.connect (hosname, port) mở kết nối TCP đến tên máy chủ trên cổng . Khi bạn mở một ổ cắm, bạn có thể đọc từ nó giống như bất kỳ đối tượng IO nào. Khi hoàn tất, hãy nhớ đóng nó, vì bạn sẽ đóng một tệp.

Đoạn mã sau là một ứng dụng khách rất đơn giản kết nối với một máy chủ và cổng nhất định, đọc bất kỳ dữ liệu có sẵn nào từ ổ cắm và sau đó thoát -

#!/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

Bây giờ hãy chạy server.txt này trong nền và sau đó chạy phía trên client.py để xem kết quả.

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

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

Điều này sẽ tạo ra kết quả sau -

Got connection from ('127.0.0.1', 48437)
Thank you for connecting

Mô-đun Internet Python

Danh sách một số mô-đun quan trọng trong lập trình Mạng / Internet Python.

Vui lòng kiểm tra tất cả các thư viện được đề cập ở trên để hoạt động với các giao thức FTP, SMTP, POP và IMAP.


Được cập nhật: 21 tháng 3 lúc 16:49:21 | Lượt xem: 729