Hướng dẫn network programming in python - lập trình mạng trong python

Vietnamese (Tiếng Việt) translation by Dai Phong (you can also view the original English article) Dai Phong (you can also view the original English article)

Giới thiệu về Lập trình Mạng trong Python

Bài hướng dẫn này sẽ giới thiệu về socket trong Python và cách sử dụng mô đun socket để xây dựng các máy chủ và máy khách HTTP trong Python. Nó cũng sẽ khái quát Tornado, một thư viện kết nối mạng trong Python, lý tưởng cho long polling, WebSocket và các ứng dụng khác yêu cầu kết nối lâu dài với mỗi người dùng.

Socket là gì?

Một socket là một liên kết giữa hai ứng dụng có thể giao tiếp với nhau (hoặc cục bộ trên một máy đơn lẻ hoặc từ xa giữa hai máy ở các vị trí riêng biệt).

Về cơ bản, socket hoạt động như một liên kết giao tiếp giữa hai thực thể, tức là máy chủ và máy khách. Một máy chủ sẽ trả về thông tin được yêu cầu bởi một máy khách. Ví dụ, khi bạn truy cập trang này, trình duyệt tạo một socket và kết nối với máy chủ.

Mô-đun socket

Để tạo một socket, bạn sử dụng hàm

import socket
4 và cú pháp đơn giản như sau:

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

Đây là mô tả của các đối số:

  • socket_family: Đại diện cho họ địa chỉ (và giao thức). Nó có thể là AF_UNIX hoặc AF_INET.: Đại diện cho họ địa chỉ (và giao thức). Nó có thể là AF_UNIX hoặc AF_INET.
  • socket_type: Đại diện cho loại socket và có thể là SOCK_STREAM hoặc SOCK_DGRAM.: Đại diện cho loại socket và có thể là SOCK_STREAM hoặc SOCK_DGRAM.
  • protocol: Đây là một đối số tùy chọn, và nó thường mặc định là 0.: Đây là một đối số tùy chọn, và nó thường mặc định là 0.

Sau khi lấy đối tượng socket, bạn có thể tạo một máy chủ hoặc máy khách theo ý mình bằng cách sử dụng các phương thức có sẵn trong mô đun socket.

Tạo một máy khách đơn giản

Trước khi bắt đầu, chúng ta hãy tìm hiểu các phương thức socket của client có sẵn trong Python.

  • import socket
    5
  • import socket
    6: Khởi tạo một kết nối máy chủ TCP.
    : Khởi tạo một kết nối máy chủ TCP.

Để tạo một socket mới, trước tiên bạn import phương thức socket của lớp socket.

import socket

Tiếp theo, chúng ta sẽ tạo một socket stream (TCP) như sau:

stream_socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )

Tham số

import socket
7 cho biết bạn đang yêu cầu một socket Internet Protocol (IP), cụ thể là IPv4. Tham số thứ hai là transport protocol type
import socket
8 cho các socket TCP. Ngoài ra, bạn cũng có thể tạo một socket IPv6 bằng cách chỉ định tham số
import socket
9 của socket.

Chỉ định máy chủ.

server = "localhost"

Chỉ định cổng mà chúng ta muốn liên lạc.

port =80

Kết nối socket tới cổng nơi máy chủ đang lắng nghe.

server_address = ((host, port))
stream_socket.connect(server_address)

Điều quan trọng cần lưu ý là máy chủ và cổng phải là một tuple.

Gửi yêu cầu dữ liệu đến máy chủ:

message = 'message'
stream_socket.sendall(message)

Nhận phản hồi từ máy chủ:

data = sock.recv(10)
print data

Để đóng một kết nối socket, bạn sử dụng phương thức close:

stream_socket.close()

Dưới đây là code đầy đủ cho Client/Server.

import socket
import sys

# Create a TCP/IP socket
stream_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Define host
host = 'localhost'

# define the communication port
port = 8080

# Connect the socket to the port where the server is listening
server_address = ((host, port))

print "connecting"

stream_socket.connect(server_address)


# Send data
message = 'message'
stream_socket.sendall(message)

# response
data = stream_socket.recv(10)
print data


print 'socket closed'
stream_socket.close()

Xây dựng một máy chủ đơn giản

Bây giờ chúng ta hãy tìm hiểu một máy chủ Python đơn giản. Sau đây là các phương thức máy chủ của socket có sẵn trong Python.

  • import socket
    5
  • stream_socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
    1: Ràng buộc địa chỉ (tên máy chủ, số cổng) vào socket.
  • stream_socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
    2: Thiết lập và khởi động TCP listener.
  • stream_socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
    3: Chấp nhận kết nối TCP client.

Chúng ta sẽ làm theo các bước sau:

  • Tạo một socket.
  • Ràng buộc socket với một cổng.
  • Bắt đầu chấp nhận các kết nối trên socket.

Đây là chương trình máy chủ.

import socket
0

Máy chủ hiện đã sẵn sàng cho các kết nối đến.

Bây giờ hãy chạy chương trình máy khách và máy chủ trong các cửa sổ terminal riêng biệt, để chúng có thể giao tiếp với nhau.

Đầu ra Máy chủ

import socket
1

Đầu ra Máy khách

import socket
2

Framework Tornado

Framework Tornado là một trong các thư viện có sẵn cho lập trình mạng bằng Python. Trong phần này, chúng ta sẽ thảo luận về thư viện này và cách sử dụng nó để xây dựng WebSocket.

Tornado là một web framework bằng Python và thư viện kết nối mạng không đồng bộ. Tornado sử dụng I/O mạng không chặn, và do đó có khả năng mở rộng tới hàng chục nghìn kết nối mở. Đặc điểm này làm cho nó trở nên lý tưởng cho kết nối long-polling, WebSocket và các ứng dụng khác yêu cầu kết nối lâu dài với mỗi người dùng.

Hãy tạo một WebSocket Tornado đơn giản:

import socket
3

Trong đoạn code trên:

  • Chúng ta định nghĩa lớp
    stream_socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
    4, đóng vai trò là trình xử lý cho một yêu cầu và trả về một phản hồi bằng cách sử dụng phương thức
    stream_socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
    5.
  • Phương thức
    stream_socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
    6 là entry cho chương trình.
  • stream_socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
    7 tạo cơ sở cho ứng dụng web và nhận một bộ các trình xử lý, ví dụ, ApplicationHandler.
  • Ứng dụng lắng nghe trên cổng 5000 và một ứng dụng khách có thể giao tiếp với ứng dụng này bằng cách sử dụng cùng một cổng.
  • stream_socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
    8 tạo ra một luồng không chặn cho một ứng dụng.

Nếu chúng ta chạy ứng dụng, chúng ta sẽ nhận được kết quả như trong hình minh hoạ bên dưới.

Hướng dẫn network programming in python - lập trình mạng trong python
Hướng dẫn network programming in python - lập trình mạng trong python
Hướng dẫn network programming in python - lập trình mạng trong python

Phần kết luận

Bây giờ bạn đã nắm được những kiến thức cơ bản về lập trình socket trong Python và cách bạn có thể xây dựng một máy chủ và máy khách đơn giản. Hãy thử bằng cách xây dựng ứng dụng trò chuyện của riêng bạn. Để tìm hiểu thêm, hãy truy cập tài liệu hướng dẫn Python.

Ngoài ra, đừng ngần ngại xem qua những gì chúng tôi đang dành để bán và dành cho học tập trên Envato Market, và đừng ngần ngại hỏi bất kỳ câu hỏi nào và cung cấp phản hồi có giá trị của bạn bằng cách sử dụng phần comment ở bên dưới.