30/09/2018, 20:11
Cách thức download file từ Server?
Cho mình hỏi là làm thế nào để các Server có thể cho Client download nhiều luồng dữ liệu trên Server cùng 1 lúc có phải mỗi lần down ứng dụng sẽ tạo ra 1 Client khác kết nối đến Server đó và Down file của Server thông qua Client phụ này mà không liên quan đến Client đầu tiên phải không ạ.Cảm ơn mọi người đã quan tâm ạ
Bài liên quan
Câu hỏi 1: Đúng rồi, dưới client sẽ phải mở nhiều connection tới server để nhận dữ liệu, sau đó nó sẽ ghép các phần down để trở thành 1 files (mỗi một connection sẽ được mở ở 1 thread) - cái này được gọi là Segmented Downloading (gửi thông qua 2 header: Accept-Ranges và Content-Range).
Còn nếu download nhiều file thì cũng mỗi thread sẽ down 1 file. Thường thì app dùng threading hơn là spawn/folk ra cả process vì thread rẻ hơn nhiều so với process (tốn ít RAM, CPU hơn)
Câu hỏi 2: Cái này cũng tùy vào giao thức truyền.
Nếu là FTP thì có 1 connection chính để control, và nhiều connection # để truyền file.
Với HTTP thì các connection độc lập với nhau, không có connection nào phụ thuộc vào connection nào cả. Tuy nhiên, thường nếu bạn download kiểu segmented/swarm thì bạn phải biết được kích thước của nó rồi chia đều. Thế nên, bạn sẽ phải có 1 request đầu lấy dung lượng của file (chỉ cần trả về header), sau đó thì tạo các request với các content-rage đều nhau.
Chú ý:
Em ơn cảm bác đã chia sẻ cho em biết nó cứ làm em mơ hồ quá