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 Show ổ 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) print(clientMsg) # 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 PythonNội dung chính Hiển thị
Ổ 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ủ
Để 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. Socket được chia làm 2 loại chính là Steam Socket và Datagram Socket
Một số thuộc tính của SocketKhá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ềnLập trình mô hình Socket bằng PythonMô tả mô hình
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)
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 PythonLậ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. |