2009-10-12 35 views
5

Hãy tha thứ cho sự thiếu hiểu biết của tôi về chủ đề này.Multipart Tải xuống trong C#?

Tôi muốn viết một ứng dụng trong C# có thể tải tệp xuống máy chủ theo cách tương tự DownThemAll. DownThemAll dường như mở bốn kết nối đến máy chủ HTTP để tải xuống cùng một tệp. Tôi đã chỉ tự hỏi nếu có bất kỳ thư viện hiện có mà có thể làm điều này.

Dưới đây là một trích dẫn từ trang web của họ về tính năng này:

DownThemAll có kỹ thuật tải thông minh gọi là 'nhiều phần dữ liệu tải về. Nó chia nhỏ các tập tin thành nhiều phần, được tải xuống cùng một lúc.

Tôi cũng muốn có thể tạm dừng/tiếp tục tải xuống. Đó là chức năng cơ bản mà tôi muốn, tôi không nhất thiết cần một thư viện quản lý tải xuống chính thức, nhưng nếu có một thư viện có thể làm những việc này thì tôi cũng muốn biết về chúng. Các tệp nằm trong thư mục được bảo vệ bằng mật khẩu được lưu trữ với lighttpd, vì vậy tôi cũng cần một số cách để xác thực bản thân mình.

Nếu không có bất kỳ thư viện nào có sẵn mà tôi có thể sử dụng, thì tôi nên xem các lớp học .net nào để có thể thực hiện việc này?

Cảm ơn!

EDIT: Viết lại tiêu đề để phù hợp hơn và thêm trích dẫn từ trang web DownThemAll giải thích nó là gì.

2nd EDIT: Tôi tin rằng svens đã đăng câu trả lời phù hợp nhất cho đến nay, mặc dù là nhận xét:/Đó là lỗi của tôi vì tôi đã nhầm lẫn tiêu đề vì tôi không biết mình đang nói gì. Anh ấy đã đăng một số article để tiếp tục tạm dừng/tiếp tục tải xuống HTTP. Nó cũng nói về Range tiêu đề đó là những gì tôi nghĩ rằng tôi phải sử dụng:

Tiêu đề Phạm vi có khả năng yêu cầu nhiều hơn một phạm vi trong một yêu cầu duy nhất, một tính năng gọi là "dãy nhiều phần dữ liệu." Đừng nhầm lẫn điều này với tải xuống được phân đoạn, hầu như tất cả các công cụ tải xuống đều sử dụng để tăng tốc độ tải xuống. Những công cụ này yêu cầu cải thiện tốc độ tải xuống bằng cách mở hai hoặc nhiều kết nối đồng thời, mỗi kết nối yêu cầu một phạm vi khác nhau của tệp.

Vì vậy, tôi sử dụng phạm vi này để đồng thời tải xuống một số phần nhất định của tệp. Sau đó, một lần nữa điều này có lẽ không có bất kỳ lợi thế hơn chỉ cần tải về các tập tin trong một đi. Tôi sẽ chỉ làm điều đó và cho phép tạm dừng/tiếp tục.

Thanks guys!

P.S svens, hãy tiếp tục và đăng nhận xét dưới dạng câu trả lời để tôi có thể chấp nhận nếu bạn muốn.

+2

http://www.devx.com/dotnet/Article/22533/0/page/2 mô tả cách tải xuống được tiếp tục trong giao thức http, http://www.codeproject.com/KB/IP/pauseresume.aspx mô tả cách làm điều đó với máy chủ ftp. – svens

+0

Đó có thể là một câu trả lời tôi nghĩ. Đó là phương pháp tương tự có thể là cách họ tải xuống các phần riêng biệt của tệp, sau đó bằng cách nào đó đặt nó lại với nhau khi các phần được hoàn thành. –

+0

Thực tiễn này thực sự không tốt cho máy chủ và nỗ lực được thực hiện để chặn các lần tải xuống như vậy. Bí quyết tăng lên trong thời gian của modem quay số khi mọi người cố gắng ép mọi thứ ra khỏi nó. Chỉ cần được tốt đẹp và tải về trong một kết nối. EDIT: Phương pháp này sẽ thất bại trên máy chủ MY vì nhiều lý do. Tôi có một thứ để ném gậy dưới chân của người đần độn. – Zdenek

Trả lời

2

Tôi với Svens về vấn đề này, http://www.devx.com/dotnet/Article/22533/0/page/2 dường như nói lên tất cả.

+0

Cảm ơn. Vì anh ấy đã nói nó trước, tôi sẽ đợi một lúc để xem anh ấy có đăng nó như một câu trả lời để tôi có thể chấp nhận nó không. Khác nó sẽ đi với bạn vì lợi ích của việc đóng cửa vào câu hỏi này. –

1

Lớp System.Net.HttpClient sẽ có thể tải xuống tệp của bạn. Chỉ cần gọi lớp này từ một chủ đề hoặc một nhóm luồng và bạn có thể tải xuống nhiều tệp cùng một lúc.

+1

Cảm ơn tôi đánh giá cao nó, nhưng tôi không có ý nói rằng tôi muốn tải về các tập tin khác nhau cùng một lúc. DownThemAll mở bốn kết nối đến máy chủ HTTP bằng cách nào đó để tải xuống/cùng/tệp. –

+0

HttpClient có lẽ dễ dàng hơn Http.Get ... +1 – overstood

+1

Chúng gọi nó là 'tải nhiều phần'. –

3

Pardon đăng tải một bài báo cũ hơn Chúa Kitô, nhưng điều này:

http://www.codeproject.com/Articles/21053/MyDownloader-A-Multi-thread-C-Segmented-Download-M

có vẻ là gần gũi hơn với những gì được yêu cầu.

Câu trả lời chính xác được đánh dấu là tốt cho việc cung cấp phần tải xuống một phần phía máy chủ, nó đi một cách khác để giải thích các tiêu đề HTTP Range làm gì, nhưng không có ứng dụng tải xuống.

+0

Chắc chắn có vẻ tốt. Có một upvote. –

Các vấn đề liên quan