Bài hướng dẫn này sẽ giới thiệu về socket trong Python và cách sử dụng socket mô-đun để xây dựng máy chủ và máy khách trong HTTP 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 bỏ phiếu dài, 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
Ổ cắm là gì?
Một ổ cắm là một liên kết giữa hai ứng dụng có thể giao tiếp với nhau [hoặc bộ 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, ổ cắm 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 sẽ tạo một ổ cắm và kết nối với máy chủ
Ổ cắm mô-đun
Để tạo socket, bạn sử dụng hàm
200 và cú pháp đơn giản như sau
1
import socket
2
s= socket.socket [socket_family, socket_type, protocol=0]
Đây là mô tả của các đối số
- ổ cắm_gia đình. Đạ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 các loại ổ cắm và có thể là SOCK_STREAM hoặc SOCK_DGRAM
- giao thức. Đây là một tùy chọn đối số, và nó thường được mặc định là 0
Sau khi lấy socket đối tượng, bạn có thể tạo 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
2
012
02. Khởi tạo một kết nối máy chủ TCP
Để tạo một ổ cắm mới, trước tiên bạn nhập phương thức ổ cắm của lớp ổ cắm
1
import socket
Tiếp theo, chúng ta sẽ tạo một luồng socket [TCP] như sau
1
stream_socket = socket.socket[ socket.AF_INET, socket.SOCK_STREAM ]
Tham số
203 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à loại giao thức truyền tải
204 cho các socket TCP. Ngoài ra, bạn cũng có thể tạo một IPv6 socket bằng cách chỉ định tham số
205 của socket
Chỉ định máy chủ
1
server = "localhost"
Chỉ định cổng mà chúng ta muốn liên lạc
1
import socket1
Kết nối ổ cắm tới cổng nơi máy chủ đang lắng nghe
1
import socket3_______0_______
import socket5
import socket6
Đ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ủ
1
import socket8
2
20
Nhận phản hồi từ máy chủ
1
22_______0_______
24
To close a connect socket, you use close method
1
26
Dưới đây là code đầy đủ cho Client/Server
1
import socket
2
s= socket.socket [socket_family, socket_type, protocol=0]0
import socket6
s= socket.socket [socket_family, socket_type, protocol=0]2
s= socket.socket [socket_family, socket_type, protocol=0]3
s= socket.socket [socket_family, socket_type, protocol=0]4
s= socket.socket [socket_family, socket_type, protocol=0]5
s= socket.socket [socket_family, socket_type, protocol=0]6
s= socket.socket [socket_family, socket_type, protocol=0]7
s= socket.socket [socket_family, socket_type, protocol=0]8
s= socket.socket [socket_family, socket_type, protocol=0]9
10
11
12
13
14
15
16
17
18
19
import socket3
import socket1
import socket2
import socket3
import socket4
import socket5
import socket5
import socket7
import socket8
import socket9
10
11
import socket8
13
20
15
16
17
18
19
stream_socket = socket.socket[ socket.AF_INET, socket.SOCK_STREAM ]0
24
stream_socket = socket.socket[ socket.AF_INET, socket.SOCK_STREAM ]2
stream_socket = socket.socket[ socket.AF_INET, socket.SOCK_STREAM ]3
stream_socket = socket.socket[ socket.AF_INET, socket.SOCK_STREAM ]4
stream_socket = socket.socket[ socket.AF_INET, socket.SOCK_STREAM ]5
stream_socket = socket.socket[ socket.AF_INET, socket.SOCK_STREAM ]6
26
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 ổ cắm có sẵn trong Python
2
012
07. Ràng buộc địa chỉ [tên máy chủ, số cổng] vào ổ cắm2
08. Thiết lập và khởi động trình nghe TCP2
09. Chấp nhận kết nối máy khách TCP
Chúng ta sẽ làm theo các bước sau
- Tạo một ổ cắm
- Force socket with a port
- Bắt đầu chấp nhận các kết nối trên ổ cắm
Đây là chương trình máy chủ
1
import socket
2
s= socket.socket [socket_family, socket_type, protocol=0]0
import socket6
s= socket.socket [socket_family, socket_type, protocol=0]2
s= socket.socket [socket_family, socket_type, protocol=0]3
s= socket.socket [socket_family, socket_type, protocol=0]4
16
s= socket.socket [socket_family, socket_type, protocol=0]6
s= socket.socket [socket_family, socket_type, protocol=0]7
s= socket.socket [socket_family, socket_type, protocol=0]8
s= socket.socket [socket_family, socket_type, protocol=0]9
10
11
12
13
14
15
16
17
server = "localhost"9
19
import socket01
import socket1
import socket03
import socket2
import socket05
import socket4
import socket5
import socket08
import socket7
import socket10
import socket8
import socket12
import socket9
11
import socket15
13
15
import socket18
16
18
import socket21
stream_socket = socket.socket[ socket.AF_INET, socket.SOCK_STREAM ]0
import socket23
stream_socket = socket.socket[ socket.AF_INET, socket.SOCK_STREAM ]2
import socket25
stream_socket = socket.socket[ socket.AF_INET, socket.SOCK_STREAM ]3
stream_socket = socket.socket[ socket.AF_INET, socket.SOCK_STREAM ]4
import socket28
stream_socket = socket.socket[ socket.AF_INET, socket.SOCK_STREAM ]6
import socket30
import socket31
import socket32
import socket33
import socket34________2__
Máy chủ đã có sẵn 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ủ
1
import socket40_______0_______
import socket42
import socket6
import socket44
s= socket.socket [socket_family, socket_type, protocol=0]2
import socket46
Đầu máy khách
12_______48
2
import socket50
import socket6_______2_______52
s= socket.socket [socket_family, socket_type, protocol=0]2
import socket54
Lốc xoáy khung
Framework Tornado là một trong các thư viện có sẵn để 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 khung web bằng Python và thư viện kết nối mạng không đồng bộ. Tornado sử dụng mạng I/O không ngăn chặn, và do đó có khả năng mở rộng tới hàng kết nối mở dự đoán. Đặ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 đơn giản WebSocket Tornado
1
import socket56
2
import socket58
import socket6
s= socket.socket [socket_family, socket_type, protocol=0]2
s= socket.socket [socket_family, socket_type, protocol=0]4
import socket62
s= socket.socket [socket_family, socket_type, protocol=0]6
s= socket.socket [socket_family, socket_type, protocol=0]7
import socket65
s= socket.socket [socket_family, socket_type, protocol=0]9
import socket67
11
import socket69
12
import socket71
14
import socket73
16
import socket75
17
import socket77
19
import socket79
import socket1
import socket81
import socket2
import socket83
import socket4
import socket85
import socket5
import socket7
import socket8
import socket89
import socket9
import socket91
11
import socket93
13
import socket95
15
import socket97
16
import socket99
Trong đoạn mã trên
- Chúng ta định nghĩa lớp
2
10, đóng vai trò là trình xử lý cho một yêu cầu và trả lại phản hồi bằng cách sử dụng phương thức2
11 - Phương thức
2
12 là mục nhập cho chương trình 2
13 tạo cơ sở cho ứng dụng web và nhận một bộ 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
2
14 tạo ra một luồng không giới hạ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 họa bên dưới
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ò chơi 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ạ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ạ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