Kiểm tra udp python

Các tệp được truyền có thể có dung lượng (byte) khác nhau, đối với UDP mỗi lần truyền, số byte tối đa là 65508, do đó chúng ta cần chia nhỏ tệp thành nhiều phần để gửi đi. Trước khi gửi file từ client lên server, client phải thông báo cho server biết rằng đang chuẩn bị gửi file với các thông tin như tên file, file được chia ra thành bao nhiêu phần, mỗi phần có dung lượng là bao nhiêu. this information is closed package in the object FileInfo. Trong ví dụ này, chúng tôi chia tệp ra thành các phần có dung lượng 32k, và phần cuối cùng có dung lượng là phần dư của tổng dung lượng chia cho 32k

ổ cắm nhập khẩu

localIP     = "127. 0. 0. 1"

localPort   = 20001

kích thước bộ đệm = 1024

msgFromServer       = "Xin chào Máy khách UDP"

bytesToSend         = str. mã hóa (tin nhắnFromServer)

# Tạo ổ cắm datagram

UDPServerSocket = ổ cắm. ổ cắm (họ = ổ cắm. AF_INET, gõ=ổ cắm. SOCK_DGRAM)

# Liên kết với địa chỉ và ip

Ổ cắm máy chủ UDP. liên kết ((localIP, localPort))

print("Máy chủ UDP đang hoạt động và đang lắng nghe")

# Lắng nghe các datagram đến

trong khi (Đúng)

bytesAddressPair = UDPServerSocket. recvfrom(bufferSize)

tin nhắn = bytesAddressPair[0]

địa chỉ = bytesAddressPair[1]

    clientMsg = "Thông báo từ Khách hàng. {}". định dạng (thông báo)
    clientIP  = "Địa chỉ IP máy khách. {}". định dạng(địa chỉ)

    print(clientMsg)
    print(clientIP)

# Gửi trả lời cho khách hàng

Ổ cắm máy chủ UDP. sendto(byteToSend, địa chỉ)

Python là ngôn ngữ cho phép chúng ta làm việc ở hai cấp độ truy cập của mạng dịch vụ. Trong bài viết này, Học viện Agile sẽ chia sẻ đến các bạn những kiến ​​thức cơ bản về lập trình socket trong Python

Nội dung chính Hiển thị

  • Ổ cắm là gì?
  • Một số thuộc tính của Socket
  • Lập trình mô hình Socket bằng Python
  • Chương trình demo Lập trình Socket bằng Python

  • Ổ cắm là gì?
    • Một số thuộc tính của Socket
  • Lập trình mô hình Socket bằng Python
    • Chương trình demo Lập trình Socket bằng Python

Ổ cắm là gì?

Giữa hai chương trình chạy trên mạng cần có hai chiều liên kết để kết nối 2 ứng dụng với nhau. Điểm cuối, nút đầu của liên kết hướng bài hát (điểm cuối) được gọi là ổ cắm. Cụ thể, khi bạn viết một ứng dụng và cần tương tác với ứng dụng khác, chúng ta sẽ dựa trên mô hình máy khách/máy chủ

  • Người phục vụ. ứng dụng có khả năng phục vụ, cung cấp cho bạn thông tin
  • Khách hàng. ứng dụng gửi yêu cầu đến máy chủ

Để yêu cầu máy chủ thực hiện được điều gì đó, máy khách phải có khả năng kết nối với máy chủ. Cơ chế kết nối này được đối tượng hóa gọi là ổ cắm, tương tự như ổ cắm dây vào ổ cắm điện. Máy chủ được coi là ổ cắm, Máy khách là ổ cắm. Một ổ cắm có thể kết nối nhiều xung điện, tương tự như việc một Máy chủ có thể kết nối và phục vụ cho nhiều Máy khách.  

Kiểm tra udp python

Socket được chia làm 2 loại chính là Steam Socket và Datagram Socket

  • Steam Socket (dựa trên giao thức TCP). Truyền dữ liệu chỉ được thực hiện giữa 2 quá trình thiết lập kết nối. Ổ cắm hơi chắc chắn dữ liệu truyền đi đáng tin nhờ có cơ chế chống tắc nghẽn và cơ chế quản lý luồng lưu thông tin trên mạng
  • Datagram Socket (dựa trên giao thức UDP). Data transfer transfer is not need to set the connection between 2 process. Ngược lại với TCP, truyền dữ liệu theo giao thức UDP kém tin cậy, có thể sai trình tự và bị lặp lại. Tuy nhiên, cơ chế của Datagram đơn giản hơn nên có tốc độ nhanh, thường được ứng dụng trong các ứng dụng trò chuyện hoặc trò chơi trực tuyến

Một số thuộc tính của Socket

Khái niệmMiêu tả Miền (vùng)Vùng sử dụng xác định tầng mạng hạ tầng, nơi diễn ra giao tiếp của ổ cắm. Vùng giao tiếp ứng dụng tốt nhất hiện nay là AF_INET. AF_UNIX chỉ được sử dụng trong bộ giao tiếp cục bộ nhưng ít được sử dụng trong thực tế. Ngoài ra chúng ta còn có AF_IPX, AF_ISO và AF_NSType (kiểu)Với mỗi vùng miền, bạn có nhiều cách để giao tiếp. SOCK_DGRAM (giao tiếp một chiều) và SOCK_STREAM (giao tiếp 2 chiều)Giao thức (giao thức)Là cách quy ước gửi nhận dữ liệu giữa hai hoặc nhiều máy tính trong mạng. Mặc định là 0, sử dụng để nhận diện một biến thể của giao thức bên trong miền

Lập trình mô hình Socket bằng Python

Mô tả mô hình

  1. Chúng ta mở một ổ cắm – socket() để tạo ổ cắm ổ cắm cho Máy chủ. Đây là quá trình điều khiển hệ thống bổ sung tài nguyên, chuẩn bị kết nối. Bạn cần chỉ định tên hoặc số hiệu cổng cho ổ cắm để Khách hàng biết đến ổ cắm của Máy chủ
  2. Chúng ta liên kết máy chủ với máy chủ hoặc máy chủ và cổng – bind().  
  3. Máy chủ sẽ bắt đầu lắng nghe các kết nối từ Máy khách đến trên cổng – listen()
  4. Một yêu cầu kết nối được gửi từ máy khách tới máy chủ – connect(). Máy chủ chấp nhận yêu cầu của máy khách, kết nối từ đó được thiết lập – accept()
  5. Cannot send and receive tin – read() / write() tương tự sử dụng lệnh read/write to read on file. Ổ cắm dựa trên số mô tả (socket descriptor) để xác định cần đọc ghi cho chức năng đọc/ghi
  6. Đóng kết nối – close()

Trong phạm vi bài viết, Học viện Agile sẽ tập trung vào Steam Socket (dựa trên giao thức TCP)

Mô-đun ổ cắm trong Python

Trong Python, chúng ta sử dụng hàm socket. socket() trong Socket Module với cú pháp chung

Chi tiết tham số

socket_family (Gia đình địa chỉ, hay còn gọi là kiểu thiết lập kết nối)
  • AF_UNIX
  • AF_INET (Ipv4) hoặc AF_INET6 (Ipv6)
  • AF_IPX (Vùng giao thức IPX mạng Novell)
  • AF_ISO ( chuẩn giao thức ISO)
  • AF_NS (Hệ thống mạng giao thức Xerox)
socket_type (cách thiết lập giao thức)
  • SOCK_STREAM (giao thức TCP)
  • SOCK_DGRAM (giao thức UDP)

Ngoài ra, chúng ta còn có thêm một số phương thức

Phương thứcÝ nghĩa s. bind((HOST, PORT))Đăng ký tên, gán địa chỉ vào sockets. close()Đóng kết nốis. listen(2) Socket lắng nghe tới >= 2 kết nốidữ liệu = máy khách. recv(1024)Nhận dữ liệuứng dụng khách, addr = s. accept() Máy khách nhập cửa, máy chủ chấp nhận và tạo ra một ổ cắm mới. Máy khách và máy chủ có thể nhận và truyền dữ liệu. str_data = dữ liệu. decode(“utf8”)Dữ liệu phân tích đã nhậns. sendall(byte(msg, “utf8”))Gửi dữ liệu trên Steam Socket (thông qua giao thức TCP)

Chương trình demo Lập trình Socket bằng Python

Lập trình Socket trên Server

Lập trình Socket trên Client

Xử lý kết nối đồng thời nhiều Client

Cách xử lý tuần tự phía trên sẽ không phù hợp khi có nhiều Client cùng kết nối với một Server. Để xử lý kết nối đồng thời của nhiều Máy khách, bạn có thể sử dụng lệnh fork() để tạo trình điều khiển mới hoạt động độc lập với Máy chủ và máy khách phục vụ theo cách riêng của nó. Máy chủ hoàn toàn tự do để tiếp nhận các kết nối khác

Một cách nữa để xử lý kết nối đồng thời nhiều Client đang sử dụng cách tạo chuỗi tuyến. Lưu ý. route less when used in UNIX and LINUX

Hy vọng rằng bài viết đã đưa đến thông tin bổ ích cho các bạn về lập trình socket bằng Python. Ngoài những hiểu biết về lập trình ngôn ngữ, để có tư duy phát triển phần mềm linh hoạt, rút ​​ngắn thời gian đưa sản phẩm đến tay người dùng, các bạn nên tham khảo thêm về Agile . Nhờ khả năng vận chuyển tốt, đáp ứng đa dạng như cầu, trả lại hiệu quả và năng suất cao, Agile đang là lựa chọn hàng đầu của khách hàng, nhà phát triển, công ty phần mềm. – phương pháp phát triển phần mềm linh hoạt. Nhờ khả năng vận hành tốt, đáp ứng đa dạng nhu cầu, đem lại hiệu quả và năng suất cao, Agile đang là sự lựa chọn hàng đầu của khách hàng, nhà phát triển, công ty phần mềm.