Hướng dẫn how do you send a file to a socket in python? - làm thế nào để bạn gửi một tệp đến một ổ cắm trong python?
& nbsp; · 8 phút Đọc · Cập nhật tháng 6 năm 2022 · Thư viện tiêu chuẩn Python · 8 min read · Updated jun 2022 · Python Standard Library Show Tiết lộ: Bài đăng này có thể chứa các liên kết liên kết, có nghĩa là khi bạn nhấp vào liên kết và mua hàng, chúng tôi nhận được hoa hồng.: This post may contain affiliate links, meaning when you click the links and make a purchase, we receive a commission. Truyền tệp là quá trình sao chép hoặc di chuyển tệp từ máy tính này sang máy tính khác qua mạng hoặc kết nối Internet. Trong hướng dẫn này, chúng tôi sẽ từng bước về cách bạn có thể viết các tập lệnh Python máy khách/máy chủ xử lý điều đó. Ý tưởng cơ bản là tạo một máy chủ lắng nghe trên một cổng cụ thể; Máy chủ này sẽ chịu trách nhiệm nhận các tệp (bạn cũng có thể tạo máy chủ gửi tệp). Mặt khác, máy khách sẽ cố gắng kết nối với máy chủ và gửi một tệp thuộc bất kỳ loại nào. Chúng tôi sẽ sử dụng mô-đun Xin lưu ý rằng có nhiều cách đáng tin cậy hơn để chuyển các tệp với các công cụ như Liên quan: Cách sắp xếp các tệp bằng cách mở rộng trong Python. How to Organize Files by Extension in Python. Đầu tiên, chúng tôi sẽ cần cài đặt thư viện
Mã khách hàngHãy bắt đầu với máy khách, người gửi:
Chúng tôi cần chỉ định địa chỉ IP, cổng của máy chủ chúng tôi muốn kết nối và tên của tệp chúng tôi muốn gửi.
Hãy tạo ổ cắm TCP:
Kết nối với máy chủ:
Phương pháp
Tôi đã sử dụng Bây giờ chúng tôi cần gửi tệp và khi chúng tôi đang gửi tệp, chúng tôi sẽ in các thanh tiến trình đẹp bằng thư viện
Về cơ bản, những gì chúng tôi đang làm ở đây là mở tệp như được đọc bằng nhị phân ( Liên quan: Cách tạo ứng dụng trò chuyện trong Python. How to Make a Chat Application in Python. Mã máy chủĐược rồi, vì vậy chúng tôi đã hoàn thành với khách hàng. Hãy đi sâu vào máy chủ, vì vậy hãy mở một tệp Python trống mới và:Let's dive into the server, so open up a new empty Python file and:
Tôi đã khởi tạo một số tham số chúng tôi sẽ sử dụng. Lưu ý rằng tôi đã sử dụng "0.0.0.0" làm địa chỉ IP máy chủ. Điều này có nghĩa là tất cả các địa chỉ IPv4 trên máy cục bộ. Bạn có thể tự hỏi tại sao chúng ta không chỉ sử dụng địa chỉ IP cục bộ hoặc "localhost" hoặc "127.0.0.1"? Chà, nếu máy chủ có hai địa chỉ IP, hãy nói "192.168.1.101" trên mạng và "10.0.1.1" trên một mạng khác và máy chủ lắng nghe trên "0.0.0.0", nó sẽ có thể truy cập được ở cả hai IP đó."0.0.0.0" as the server IP address. This means all IPv4 addresses that are on the local machine. You may wonder why we don't just use our local IP address or "localhost" or "127.0.0.1"? Well, if the server has two IP addresses, let's say "192.168.1.101" on a network and "10.0.1.1" on another, and the server listens on "0.0.0.0", it will be reachable at both of those IPs. Ngoài ra, bạn có thể sử dụng địa chỉ IP công khai hoặc riêng tư của mình, tùy thuộc vào khách hàng của bạn. Nếu các máy khách được kết nối có trong mạng cục bộ của bạn, bạn nên sử dụng IP riêng của mình (bạn có thể kiểm tra nó bằng lệnh Ngoài ra, hãy đảm bảo bạn sử dụng cùng một cổng trong máy chủ như trong máy khách. Hãy tạo ổ cắm TCP của chúng tôi:
Bây giờ, điều này khác với khách hàng; Chúng ta cần liên kết ổ cắm mà chúng ta vừa tạo với
Sau đó, chúng tôi sẽ lắng nghe các kết nối: 0Khi máy khách kết nối với máy chủ của chúng tôi, chúng tôi cần chấp nhận kết nối đó: 1Hãy nhớ rằng khi máy khách được kết nối, nó sẽ gửi tên và kích thước của tệp. Hãy nhận chúng: 2Như đã đề cập trước đó, dữ liệu nhận được được kết hợp với Sau đó, chúng ta cần xóa đường dẫn tuyệt đối của tệp vì người gửi đã gửi tệp bằng đường dẫn tệp của riêng mình, có thể khác với chức năng Bây giờ chúng ta cần nhận tệp: 3Không hoàn toàn khác với mã máy khách. Tuy nhiên, chúng tôi đang mở tệp dưới dạng ghi nhị phân ( Tìm hiểu thêm: Cách liệt kê tất cả các tệp và thư mục trong máy chủ FTP bằng Python How to List all Files and Directories in FTP Server using Python Được rồi, hãy để tôi thử nó trên mạng riêng của mình: 4Tôi cần vào hộp Linux của mình và gửi một tệp ví dụ: 5Hãy xem máy chủ ngay bây giờ: 6Sự kết luậnTuyệt vời, chúng tôi đã hoàn thành! Nó đang hoạt động! Nếu bạn muốn chạy mã máy chủ trên máy từ xa chứ không phải trên mạng cục bộ, thì hãy đảm bảo bạn cho phép cổng trên tường lửa. Nếu đó là VM trong đám mây, thì hãy đảm bảo bạn cho phép nó thông qua 7Điều này sẽ cho tường lửa cho phép cổng đó để liên lạc từ xa. Nếu máy chủ ở trong nhà của bạn, thì bạn cần bật cổng trên cài đặt bộ định tuyến của bạn. Bạn có thể mở rộng mã này cho nhu cầu của riêng bạn ngay bây giờ. Dưới đây là một số ví dụ bạn có thể thực hiện:
Cuối cùng, nếu bạn là người mới bắt đầu và muốn học Python, tôi khuyên bạn nên tham gia khóa học Python cho mọi người Coursera, trong đó bạn sẽ học được rất nhiều về Python, chúc may mắn! Đọc thêm: & nbsp; Cách thao tác địa chỉ IP trong Python. How to Manipulate IP Addresses in Python. Happy Coding ♥ Xem đầy đủ mã Cũng đọcBảng bình luậnLàm cách nào để gửi tệp qua ổ cắm?Server.. Bắt đầu chương trình .. Tuyên bố các biến và cấu trúc cần thiết .. Ổ cắm được tạo bằng hàm ổ cắm .. Ổ cắm được đặt vào cổng cụ thể .. Bắt đầu lắng nghe các kết nối .. Chấp nhận kết nối từ máy khách .. Tạo một tệp mới .. Nhận dữ liệu từ máy khách .. Làm thế nào để bạn gửi các tệp trong Python?Cách tiếp cận từng bước:.. Cài đặt các phụ thuộc bằng cách sử dụng Cài đặt PIP tại dòng lệnh .. Nhập các mô -đun cần thiết: HTTP.Máy chủ và Socketserver: Để lưu trữ trong trình duyệt..... Gán cổng và tên của người dùng .. Tìm địa chỉ IP của PC và chuyển đổi nó thành mã QR .. Tạo yêu cầu HTTP .. Hiển thị mã QR trong trình duyệt .. Làm cách nào để gửi các tệp từ máy chủ đến máy khách trong Python?Hàm gửi () sẽ được sử dụng để gửi dữ liệu.3: Sau khi máy chủ gửi dữ liệu, bây giờ chúng tôi tạo một chức năng ở phía máy khách chấp nhận dữ liệu và sẽ tải dữ liệu đó vào thư mục cụ thể của máy khách.
Làm cách nào để gửi tệp từ máy chủ đến máy khách?Dữ liệu tệp cần lưu trữ trong mảng với định dạng byte thô để gửi chúng cho máy khách.Với chuỗi tên tệp dữ liệu Chuỗi kích thước tại ban đầu của dữ liệu tệp.Điều này được xác định trước giữa máy khách và máy chủ và nó cần làm, nếu không, máy khách sẽ không nhận được tên tệp đang gửi bởi máy chủ.. With data file name size string at initial of file data. This is predefined between client and server and it needs to do, otherwise client will not get file name which is sending by server. |