الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية إرسال ملفات كبيرة الحجم جدا عبر بروتوكول TCP

مثبّت
بدأه حسين احمد طالب في 2 سبتمبر 2011 · 10 رد · 6,215 مشاهدة · في برمجة الشبكات والتطبيقات الموزعة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أفضل وسيلة لإرسال ملفات كبيرة الحجم جدا هي تقطيع الملف المرسل إلى قطع صغيرة وإرسالها إلى الطرف الثاني قطعة قطعة ثم يقو م الطرف الثاني بتجميعها من جديد لأن إرسال ملف بحجمه الطبيعي تضيع معظم البيانات المرسلة في معظم الحالات مرات تسلم الجرة ويسلم الملف كاملا وبما إننا نحتاج في بعض الحالات إرسال ملف حجمه (1.5GB) وغيره من الأحجام فلا بد من استخدام وسيلة ما.!

فكيف تكون الطريقة لأسال ملف كبير الحجم........؟

لنفرض أن لدينا صورة حجمها (6794 byte ) وأن نضريه التقطيع لدينا تقطع الملف إلى أجزاء كل جزء (بلوك) حجمه ( byte 2048 ) على حدة وترسله وحده هكذا

01314976376.png

تم يرسل البلوك الثاني ثم الثالث ثم يبقى جزء اقل من (2048 byte) سوف يرسله أيضا وحده ثم بعد اكتمال التسليم يقوم الطرف الثاني بتحويل البايتات المستلمة إلى ملف

فلنكون برنامجين منفصلين بشكل التالي احدهما للأرسال والأخر للأستلام

01314974957.png

خطوات الإرسال والاستلام برمجيا .؟

1.يقوم المرسل بإرسال رسالة إلى المستلم تحوي حجم الملف وأسمه

2. يقوم المستلم بتكوين مصفوفة حجمها بحجم الملف المرسل حجمه وفتح قابلية الاستلام لدى المستلم الذي سيدخل في دوارة يضل يستلم إلى أن يكتمل الملف وإذا ضمن فترة لم يكتمل إرسال الملف أو حصل خطأ يخرج من الدوارة

3.يقوم المستلم بأرساغ رسالة إلى المرسل يخبره بأنه جاهز لاستلام البيانات إذا لم يكن مشغول أو يرسل مشغول إذا كان مشغولا

4. إذا أرسل المستلم رسالة انه جاهز للاستلام سيقوم المرسل بإرسال الملف جزء جزء وبنفس الوقت يستلم المستلم الملف جزء جزء

5.عندما يصبح حجم الملف المستلم مساويا للحجم الذي أرسل في بداية البرنامج يقوم المستلم بتحويل هذه البايتات إلى ملف ويحفظه بالاسم الذي أرسل إليه

حمل المثال من هنا

http://www.4shared.com/get/tmMP4_WY/send_large_file_by_TCP.html

send large file by TCP.rar

تم تعديل هذه المشاركة بواسطة فادي عبدالقادر في 18 سبتمبر 2011 في 10:48 — السبب: رفع الملف إلى المشاركة

5

------------------

حسين الربيعي

 

مهندس برامجيات من العراق

 

ادرس  في  RIT  في الولايات المتحدة

 

مدونتي

http://hussienahmmed.blogspot.com/

 

قناة اليوتيوب الخاصة بلدورات

https://www.youtube.com/user/alxs1aa

#2

السلام عليكم ورحمه الله وبركاته

شكرا اخي على المجهود الرائع .. بالتوفيق ..

.:: Wish to become better and better ::.

#4

عمل وشرح مميز

للفائدة سيتم تثبيت موضوعك ونتمنى منك الإستمرار بطرح مواضيع جيدة مثل هذه

#5

لو سمحت يابشمهندس انا جديد هنا

وكنت عاوز اعرف احنا بنبرمج ببرنامج ايه

يعنى بكتب الاكواد فى كوبايلر ايه

لانى لحد دى الوقت محدش ذكر البرنامج اللى بيترمج بيه

شكرا لحضرتك

#6
MRHELP كتب:

لو سمحت يابشمهندس انا جديد هنا

وكنت عاوز اعرف احنا بنبرمج ببرنامج ايه

يعنى بكتب الاكواد فى كوبايلر ايه

لانى لحد دى الوقت محدش ذكر البرنامج اللى بيترمج بيه

شكرا لحضرتك

جميع المواضيع في هذا القسم تتم بتقنية(.NET) التي تشمل لغتين(c# & visual basic) ولتشغيل اكواد هذا القسم اذا كان نظام تشغيك جهازك ويندوز يجب ان يكون لديك (Microsoft Visual Studio ) واحدث نسخة منه 2010

اما اذا كان لينوكس فيجب ان يكون لديك برنامج mono

تم تعديل هذه المشاركة بواسطة المهندس الليبي في 11 أكتوبر 2011 في 12:27

#7

شكرا لك اخي فادي وشكرا لبقية الاخوة

مدونتي

http://hussienahmmed.blogspot.com/

------------------

حسين الربيعي

 

مهندس برامجيات من العراق

 

ادرس  في  RIT  في الولايات المتحدة

 

مدونتي

http://hussienahmmed.blogspot.com/

 

قناة اليوتيوب الخاصة بلدورات

https://www.youtube.com/user/alxs1aa

#8

السلام عليكم و رحمة الله وبركاته

الأخ الكريم ... حسين شكرا على المقال الرائع جدا .... وأحب ان اضيف نقطة سيكون من الجميل لو أخذتها بالحسبان .... نحن نتكلم هنا عن ملفات كبيرة الحجم (بالجيجا بايت) فمن المهم عندها الإهتمام بالذاكرة .... فبملاحظة سريعة على الكود نجد انه بعد ان يستلم الطرف الثاني اسم وحجم الملف المراد إراسلة يقوم بعمل مصفوفة بايتات (في الذاكرة !) ليتم الإستلام إليها ثم بعد ذلك تخزين الى ملف ...

هذا امر بحاجة الى اعادة نظر .... خاصة اذا تخيلت انني اريد ان ارسل لنقل محتوايات قرص ديفي دي مضغوط في ملف ... اربعة جيجا ! ... من المرهق جدا للحاسوب وبقية البرامج العاملة حجز هذه المساحة من الذاكرة لبرنامج واحد حتى وان كان الملف اصغر من ذلك بكثير (واحد جيجا شي غير طبيعي ابدا ) ..

الاقتراح الذي يتم عمله هنا الكتابة مباشرة الى القرص الصلب يعني مع وصول كل باكت من المرسل يتم كتابته دايركت الى الملف الذي سينمو بالتدريج مع عملية الاستلام (كما يمكن ان يتم حجز المساحة كاملة في القرص الصلب من البداية وبعدها الكتابة بالتدريج للحصول على اداء اافضل بقليل) ..... واذا كنت مهتم توجد حلول افضل من هذه ايضا ...

اعود فا اشكرك على البرنامج الجميل ... الذي لن يضيف المقترح البسيط هنا اي شيء .. ولكنه للفائدة فقط

السلام عليكم

2

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#9

وعليكم السلام

اخي رغيد شكرا لك على هذا الاقتراح الرائع وفعلا هذا الاقتراح هو الصحيح الكتابة مباشرة على القرص الصلب بدون اخذ مساحات كبيرة مؤقتة من الذاكرة

شكرا لك مرة اخرى

------------------------------------------------

قائمة كتبي

خطوة بخطوة نحو قاعدة بيانات ترضي العميل بالفجوال بيسك دوت نت

01332574371.jpg

http://hussienahmmed.blogspot.com/2011/09/blog-post_15.html

خطوة بخطوة لتعلم لغة سي وسي بلاس

01332574646.png

http://hussienahmmed.blogspot.com/2011/08/cc.html

بروتوكولات الشبكات TCP,UDP,IP وبناء التطبيقات بالبروتوكول الملائم فيجوال بيسك دوت نت

01332574343.jpg

http://hussienahmmed.blogspot.com/2012/03/tcpudpip.html

تم تعديل هذه المشاركة بواسطة حسين احمد طالب في 6 مايو 2012 في 21:37

------------------

حسين الربيعي

 

مهندس برامجيات من العراق

 

ادرس  في  RIT  في الولايات المتحدة

 

مدونتي

http://hussienahmmed.blogspot.com/

 

قناة اليوتيوب الخاصة بلدورات

https://www.youtube.com/user/alxs1aa

#10

اخي حسين كيف نستطيع استنتاج الامتداد والمسار في الارسال وكيف يتم استقبالها

الله يوفقك اخي حسين

كيف يمكنني ارسال نص منسق عن طريق الsocket

مثل حجم الخط نوع الخط لون الخط

ارجو الرد ياشباب

#11

اخي الكريم انضر في خطوات الارسال ما هو موضح في الخطوة

الأولى يرسل حجم الملف واسمه اكيد مع اسمه يرسل امتداد الملف المراد ارساله

تحياتي

------------------------------------------------

قائمة كتبي

خطوة بخطوة نحو قاعدة بيانات ترضي العميل بالفجوال بيسك دوت نت

01332574371.jpg

خطوة بخطوة لتعلم لغة سي وسي بلاس

01332574646.png

بروتوكولات الشبكات TCP,UDP,IP وبناء التطبيقات بالبروتوكول الملائم فيجوال بيسك دوت نت

01332574343.jpg

------------------

حسين الربيعي

 

مهندس برامجيات من العراق

 

ادرس  في  RIT  في الولايات المتحدة

 

مدونتي

http://hussienahmmed.blogspot.com/

 

قناة اليوتيوب الخاصة بلدورات

https://www.youtube.com/user/alxs1aa

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…