נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: C#, הורדת חלקי קובץ

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
ShadowBeast
אחראי פורומים
אחראי פורומים
סמל אישי

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 17 February 2007 בשעה 18:26 | IP רשוּם
ציטוט ShadowBeast

ניסיתי לכתוב תוכנה שתוריד חלקי קובץ, כלומר, כמו מנהלי הורדה רבים, תוריד את הקובץ בחלקים ואז תחבר את החלקים לקובץ אחד...
אבל איך אני יכול לעשות את זה?
ניסיתי להשתמש במתודות הקיימות של OpenRead ו DownloadFile אבל ללא הצלחה...
מה שלא הצלחתי זה להבין איך אני יכול להתחיל את ההורדה מחלק מסויים של הקובץ, כלומר, לפי מה בכלל אני יכול לחלק את הקובץ בצורה שתהיה מובנת?

תודה.


__________________
The highest knowledge is to know that we are surrounded by mystery - Albert Schweitzer

He who will not take the hint, must take the consequence - Glenn v. Covey (1854)

ShadowBeast
חזרה לתחילת העמוד הצג את כרטיס החבר של ShadowBeast חפש הודעות אחרות של ShadowBeast
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 17 February 2007 בשעה 18:49 | IP רשוּם
ציטוט shoshan

כמובן שאתה צריך לככתוב את כל ה-HTTP לבד (לא חייב, אפשר כמו שאמרת ורק להוסיף headers)...

קובץ גדול נשלח בחתיכות בשר (Partial Content)...

ראה במסמך הבא את 14.35
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

וראה בעיקר Ethereal בזמן שהתכנה שאתה מתכוון אליה רצה.



__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
ShadowBeast
אחראי פורומים
אחראי פורומים
סמל אישי

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 17 February 2007 בשעה 19:28 | IP רשוּם
ציטוט ShadowBeast

הממ...
תודה רבה, זה מעניין...
עדיין לא ממש הצלחתי ליישם את זה, אתה יכול לתת לי דוגמה קצרה של יישום של הדבר הזה?
רק אם יש לך זמן, תודה.


__________________
The highest knowledge is to know that we are surrounded by mystery - Albert Schweitzer

He who will not take the hint, must take the consequence - Glenn v. Covey (1854)

ShadowBeast
חזרה לתחילת העמוד הצג את כרטיס החבר של ShadowBeast חפש הודעות אחרות של ShadowBeast
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 17 February 2007 בשעה 20:38 | IP רשוּם
ציטוט shoshan

הממ... קראת גם את
14.35.2

אתה יכול להוריד את הגודל של הקובץ עם HEAD

בשביל במגהבייט הראשון אתה אמור להוסיף header כזה:
קוד:
range:bytes=0-1048576


בשביל השני:
קוד:
range:bytes=1048577-2097152


וכן הלאה,
אם השרת מחזיר 200 אז הוא לא תומך,
אם הוא מחזיר 206 אז סבבה...

ואתה יכול להוריד אותם בו זמנית (עם threads)


__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
ShadowBeast
אחראי פורומים
אחראי פורומים
סמל אישי

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 17 February 2007 בשעה 21:00 | IP רשוּם
ציטוט ShadowBeast

וואי תודה רבה, אתה לא יודע כמה אתה עוזר לי...
בלעדיך לא הייתי מצליח, תודה!


__________________
The highest knowledge is to know that we are surrounded by mystery - Albert Schweitzer

He who will not take the hint, must take the consequence - Glenn v. Covey (1854)

ShadowBeast
חזרה לתחילת העמוד הצג את כרטיס החבר של ShadowBeast חפש הודעות אחרות של ShadowBeast
 
ShadowBeast
אחראי פורומים
אחראי פורומים
סמל אישי

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 17 February 2007 בשעה 22:35 | IP רשוּם
ציטוט ShadowBeast

יש לי שוב בעייה...
ניסיתי לעשות את זה:
קוד:

                WebRequest request = WebRequest.Create(textBox1.Text);

                request.Method = "HEAD";

                using (WebResponse response = request.GetResponse())
                {
                    size = response.ContentLength;
                }
                Client = new WebClient();
                Client.Headers.Add("range:bytes=0-" + Convert.ToString(size / 2));
                Stream strm = Client.OpenRead(textBox1.Text);
                Client.Dispose();
                Client.Headers.Clear();
                Client.Headers.Add("range:bytes=" + Convert.ToString((size / 2) + 1) + "-" + size.ToString());
                Stream strm2 = Client.OpenRead(textBox1.Text);
                FileStream file = new FileStream(textBox2.Text, FileMode.OpenOrCreate, FileAccess.Write);
                StreamWriter sw = new StreamWriter(file);
                sw.Write(strm);
                sw.Write(strm2);
                sw.Close();
                file.Close();

אבל משום מה זה לא עבד...
זה מחזיר לי שגיאה של
"An exception occurred during a WebClient request."
למה זה קורה?


__________________
The highest knowledge is to know that we are surrounded by mystery - Albert Schweitzer

He who will not take the hint, must take the consequence - Glenn v. Covey (1854)

ShadowBeast
חזרה לתחילת העמוד הצג את כרטיס החבר של ShadowBeast חפש הודעות אחרות של ShadowBeast
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 18 February 2007 בשעה 14:54 | IP רשוּם
ציטוט shoshan

לא סיפקת ל-web client כתובת בכלל...

ואגב, סתם מנסיון, אני לא בטוח, אבל בתחום שאני מדדתי הכי מהיר HttpWebRequest והכי איטי WebClient


__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה