Python UDP nhận
Tiểu sử. Lớp mạng Giao thức gói dữ liệu người dùng (UDP) cho phép bạn gửi tin nhắn mà không cần đảm bảo khả năng gửi. UDP không đáng tin cậy—mát-xa có thể bị mất hoặc giao không đúng yêu cầu. Nhưng điều này làm cho UDP cũng nhanh, nhẹ và là giao thức được lựa chọn cho nhiều tình huống phát trực tuyến, chẳng hạn như Netflix gửi tin nhắn UDP tới tất cả người xem của một chương trình cụ thể Làm cách nào để gửi tin nhắn UDP bằng Python? Xem video này trên YouTube Chúng tôi phân biệt giữa gửi và nhận tin nhắn UDP trong Python. Đối với mã được trình bày trong hướng dẫn này, bạn không cần cài đặt tùy chỉnh bất kỳ thư viện nào vì chúng tôi chỉ cần thư viện Gửi tin nhắn UDPĐể gửi một tin nhắn UDP tới một chương trình đang nghe trên một địa chỉ IP và PORT đã cho, hãy ghi đè địa chỉ IP, PORT và MESSAGE rồi chạy đoạn mã sau # SENDER import socket ip = "127.0.0.1" port = 5000 msg = b"hello world" print(f'Sending {msg} to {ip}:{port}') sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.sendto(msg, (ip, port)) Bây giờ, bạn có thể hỏi. nếu gửi một tin nhắn không ai nghe, liệu nó có tồn tại không? Nhận tin nhắn UDPĐây là cách bạn có thể tạo một bộ thu nghe địa chỉ IP và PORT và in tất cả các tin nhắn đã nhận ra màn hình # RECEIVER import socket ip = "127.0.0.1" port = 5000 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind((ip, port)) print(f'Start listening to {ip}:{port}') while True: data, addr = sock.recvfrom(1024) # buffer print(f"received message: {data}") Bạn có thể tùy chỉnh việc xử lý tin nhắn theo ý muốn Kỹ sư hệ thống phân tán phải thành thạo ít nhất một ngôn ngữ lập trình. Tôi biết từ kinh nghiệm cá nhân với tư cách là một nhà nghiên cứu tiến sĩ hệ thống phân tán. Nếu bạn muốn nâng cao kỹ năng Python của mình, hãy cân nhắc tham gia học viện email miễn phí của tôi để dạy cho bạn mọi thứ bạn cần để trở thành một chuyên gia Python thành thạo. Nó miễn phí nguồn
Chris Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners (NoStarch 2020), đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây Giao thức gói dữ liệu người dùng (UDP) hoạt động khác với TCP/IP. Trong đó TCP là giao thức hướng luồng, đảm bảo rằng tất cả dữ liệu được truyền theo đúng thứ tự, UDP là giao thức hướng thông báo. UDP không yêu cầu kết nối lâu dài, vì vậy việc thiết lập ổ cắm UDP đơn giản hơn một chút. Mặt khác, các thông báo UDP phải vừa với một gói (đối với IPv4, điều đó có nghĩa là chúng chỉ có thể chứa 65.507 byte vì gói 65.535 byte cũng bao gồm thông tin tiêu đề) và việc gửi không được đảm bảo như với TCP Máy chủ tiếng vangVì không có kết nối, nên máy chủ không cần lắng nghe và chấp nhận kết nối. Nó chỉ cần sử dụng bind() để liên kết ổ cắm của nó với một cổng, sau đó đợi các thông báo riêng lẻ import socket import sys # Create a TCP/IP socket sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # Bind the socket to the port server_address = ('localhost', 10000) print >>sys.stderr, 'starting up on %s port %s' % server_address sock.bind(server_address) Tin nhắn được đọc từ ổ cắm bằng cách sử dụng recvfrom(), trả về dữ liệu cũng như địa chỉ của máy khách mà nó được gửi từ đó while True: print >>sys.stderr, '\nwaiting to receive message' data, address = sock.recvfrom(4096) print >>sys.stderr, 'received %s bytes from %s' % (len(data), address) print >>sys.stderr, data if data: sent = sock.sendto(data, address) print >>sys.stderr, 'sent %s bytes back to %s' % (sent, address) Máy khách EchoỨng dụng khách UDP echo tương tự như máy chủ, nhưng không sử dụng bind() để gắn ổ cắm của nó vào một địa chỉ. Nó sử dụng sendto() để gửi tin nhắn trực tiếp đến máy chủ và recvfrom() để nhận phản hồi |