اخي Rober توكل على الله و لتستعمل مكونات ال Indy وسوف نرى بعد انتهاء المشروع كما قال اخي ناجي نسخة نستعمل فيها مكونات ال ICS .
اظافة الى ماقاله اخي ناجي يمكن اظافة MD5 HASH + SHA1 للملف .
فيما بعد يمكن استعمال الظغط للملفات .
اخي Rober توكل على الله و لتستعمل مكونات ال Indy وسوف نرى بعد انتهاء المشروع كما قال اخي ناجي نسخة نستعمل فيها مكونات ال ICS .
اظافة الى ماقاله اخي ناجي يمكن اظافة MD5 HASH + SHA1 للملف .
فيما بعد يمكن استعمال الظغط للملفات .
ملاحظة حول مكونات ال Clever رغم انه خارج الموضوع و لكن للتنويه فقط
اخي محمد ربما لاحضت ان مكونات ال Clever تفتقر الى ال Proxy Settings / Conf لاادري ان تم اظافة هاته الخاصية ام لا في النسخ الاخيرة .
ولهذا كان يجب العمل على هاته الخاصية يدويا ...
عكس ال ICS و INDY ....
اول مكون من نوعه يستعمل ال AVLTREE هو ICS .
اكيد 100 ب 100اقتباسمع استخدام مكونات Socket القياسية تتعب اكثر لكن تفهم جيدا
والسلام عليكم
تم تعديل هذه المشاركة بواسطة mohfa في 26 يونيو 2009 في 11:03
مازلت لم افهم جيدا
ماهي اول خطوة ارجوا ان تقسموا الخطوت الى خطوات جزئيه
عندما يحدد زيد الملف الذي سيشركه مع الاخرين ما ذا سنفعل .
1-
2-
3-
الخ...
شكرا
كي نبدأ في العمل .
Mohfa
يمكن استخدام Proxy مع Clever باضافة سطر فقط
بالنسبة لAVLTREE هل ترى لها فائدة بهذا المشروع :D
زكيري عبد العالي
من مرفق rober
ربما الزر Add لاضافة الملفات للقائمة StringGrid
مع اخذ بعين الاعتبار المعلومات التي سنرسلها للمتصل، ربما ننشي Record لمعلومات الملفات
ثم حسب ما يتم اختياره Socket/INDY/... مكون للتنصت
ما رايكم ؟
لما لا يكون الملف ؤكلاس نعمل و به خصائص property و ميتود
وتكون القائمة عباره عن كلاس clase de colection Collection من نوع TList
وهكذا البرمجة شيئة مارايكم .
اقتباسبالنسبة لAVLTREE هل ترى لها فائدة بهذا المشروع :D
لا لم اقصد بها المشروع و انما كان عبارة عن مقارنة صغيرة فقط بين الاربعة .
انا مع اخي DeltaAziz ننشئ Record لمعلومات الملفات
أعذروني على عدم تواجدي معكم يوم الجمعة لأني محروم من الجلوس على الحاسب كليا -_-
لم أفهم طريقة الـ Record التي تحدث عنها الأخ محمد عبدالعزيز فأرجو منكم شرحها
بالنسبة للخطوات سأشرح قليلا الفكرة العامة للمشورع نظريا لكي نبدأ بالكود أعتمادا على الشكل الذي أقترحته في اول مشاركة و بالنسبة للكود سنتفق عليه لاحقا
زيد = Server
عمر = Client
1- يقوم زيد بتحديد الملف المطلوب إضافته إلى المشاركة من خلال الزر ( ... ) و بعد تحديد الملف يقوم بالضغط على الزر ( Add ) لحفظ معلومات الملف و هي ( الأسم - اللاحقة - المسار الكامل - الحجم - تارخ أخر تعديل - عدد مرات التحميل ) في قاعدة بيانات ( لا يهم النوع ) و عرض المعلومات في الـ Stringgrid
2- يقوم عمر بالأتصال بزيد عن طريق الزر (Get File(s لعرض الملفات التي قام زيد بمشاركتها
3- عندما يتم الأتصال يقوم زيد بإرسال ملف قاعدة البيانات ( أرجو أقتراح طريقة أفضل ) الذي يحتوي على معلومات الملفات المشاركة إلى عمر الذي سيقوم بحفظ الملف و عرض بيانات الموجودة فيه داخل الـ Stringgrid
4- يقوم عمر بتحديد الملف الذي يريده و يطلب تحميله من خلال الضغط بالزر الأيمن عليه و أختيار ( Save ) و تحديد مكان الحفظ
هذه هي الفكرة العامة التي فكرت بها فهل من أقتراحات و نصائح ؟؟
I'm Away For Sometimes
I'll Finish My Works
Come Back Soon
More Study > More Search > More Try > More Learning > Great Success
اهلا اخي rober حسب ما فهمت
المشروع ليس client / serveur لانه يكفي عمل نسخ الملف من الخادم الى الزبون في حالت Get File و العكس في حالت الاضافة اما عن عرض المعلومات فيمكن عمل قاعدة بيانات تحتوي على جدول المستخدمين و الملفات
ساشرح اكثر
1-زيد له ملف على قرص c:\ يضعه في الخادم بالضغط على زر add و في نفس الوقت وان تم النسخ بلا مشاكل نضيف تسجيلة الى جدول الملفات .
2- عمر يتصل بالخادم بكلمة مرور يعرض ملفات زيد طبعا بعملت فلترة تضهر له قاءمة الملفات الموجودة في الخادم يختار منها ما يريد ينسخ الملف الى جهازه .
--------------------
ارجوا التوضيح ان كنت فهمت خطأ
في حالت ما اذا كاتن الخادم على موقع نستطيع عمل FTP لعملية الحفض و الارسال .INDY طبعا .
تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 29 يونيو 2009 في 00:12
السلام عليكم
يبدو أن لم أعرف كيف أوضح الفكرة :blush:
أخي زكيري بالنسبة لما قلته في 1
اقتباس1-زيد له ملف على قرص c:\ يضعه في الخادم بالضغط على زر add و في نفس الوقت وان تم النسخ بلا مشاكل نضيف تسجيلة الى جدول الملفات .
فيو صحيح
أما بالنسبة لـ 2 فأنظر إلى الصورة فهي توضح الطريقة
يقوم عمر بالضغط على زر ( Get File ) ثم يقوم بإختيار أسم الـ (Server) من المربع الذي يظهر و بعد أختياره و نجاح الأتصال يقوم الـ ( Server ) بإرسال قائمة الملفات لتظهر عند عمر كما هو واضح
أرجو أن أكون قد أوضحت بشكل جيد ..
I'm Away For Sometimes
I'll Finish My Works
Come Back Soon
More Study > More Search > More Try > More Learning > Great Success
السلام عليكم...
أولاً لي ملاحظة: من منطلق أن التحليل الجيد سيوصل إلى برنامج جيد فأعتقد أنه لا ضرورة لأن نستعجل بكتابة الكود حتى تكون معظم النقاط واضحة (تشجيع للأخ زكيري عبد العالي على طرحه للمزيد من الأسئلة التوضيحية :D ).
أما بالنسبة إلى المشروع نفسه:
1. طالما أن بيانات الملفات المشتركة سيتم حفظها في جدول في قاعدة بيانات فأعتقد أنه من الأفضل في صفحة الـ Shared Files (قائمة الملفات المشتركة) أن نستعمل DBGrid بدل StringGrid لأن الـ StringGrid ستحتاج إلى كود إضافي لتعبئتها بالبيانات و كذلك عند طلب تحديث البيانات.
2. سؤال: عندما يختار صاحب الـ Server ملفاً لمشاركته و تضاف بياناته إلى الجدول، هل سيبقى الملف في مكانه الأصلي أم أنه سيتم نسخه إلى مجلد خاص بالملفات المشتركة للبرنامج.
3. عندما نصل إلى نقطة "أفضل طريقة لإرسال القائمة إلى الـ Client" سنحتاج بالتأكيد إلى توضيحات أكثر من الأخ زكيري عبد العالي.
و السلام عليكم.
وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ
صدق الله العظيم
اذا هنا تأكدة من انها شبكة محلية تي اننا ليس بحاجة ايضا الى FTP بل مجرد نسخ عادي للملفات .
اقتباسيقوم عمر بالضغط على زر ( Get File ) ثم يقوم بإختيار أسم الـ (Server) من المربع الذي يظهر
نستطيع ان نفعل احسن اي ان عمر سيختار فقط زيد من قاءمة المستخدمين وبالتالي سنتصل بالسرفر الخاص بملفات اشراك زيد .
اي انه في جدول المستخدمين نحدد اي سرفر سيسخدمه كل مستخدم لوضع ملفات الاشراك.
ارجوا من الاخ روبور ان يشرح بدقه لاني لحد الان لم افهم جيد .
1-ففي البداية ضننت ان المشروع عبارة عن مشاركة في الملفات اي مثلما يخدث في الشات و يكون هناك عدة اشخاص متصلين اي اني ارسل الملف في skyp مثلا فيستقبله كل من هو في الغرفة و هذه طبع برمجة
client / server و نسميها في الجافا RMI
ثم ضننت انها تحميل ملفات على شبكة الانترنت فقلت لابد من FTP
3-وبعد ان لاحضة الصورة قلت ماهودور البرنامج مادام هو على شلكة محلية اي سوي تسجيل عدد مرات التحميل فقط في جدول وعرض الملفات في هذا الجدول عوض ان تكون في tree.
أرجوا التوضبح
شكرا
اقتباسلم أفهم طريقة الـ Record
ٌ شيئ مثل
type TSharedFile = Record FileName : string[250]; FilePath : string[250]; FileSize : LongInt; FileDate : TDateTime; end;
ونرسله ملعومات الملفات اما ملف بملف، كبل واحد بPacket او نرسل الكل على شكل Stream
ايضا يمكننا حفظ معلومات الملفات بملف File of Sharedstream بدلا من استخدام قاعدة بيانات
انسو قواعد البيانات قليلا ليس كل مشروع تزج فيه !
اقتباسونرسله ملعومات الملفات.
اين ترسل ياخي محمد انت و اخي محمد 2 تتحدثان عن برمجة client / server اي ارسال ترام يحتوي على او ....Packet و الاخ ربر حسب شرحه هي مجرد نسخ.
ارجوا اخي محمد ان تعطينا خطوات العمل فلي مدة طويلة لم استعمل هذا النوع من البرمجة
انت تعلم ان المشاريع 99% قواعدبيانات سواء في الويب او وندوز.
شكرا
تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 29 يونيو 2009 في 00:46
لا اظن انه مجرد نسخ!
ٌRober كان كاتب الكلمات: Server,Client Socket
هو نفسه مشروعه السابق حول المشاركة لكن طريقة الطرح تختلف
على الاقل هذا ما فهمت حتى الان
ربما الصورة الاخيرة التي وضعها هي التي اخلطت الامور
الموشروع بطيء جدا ساكم الموسوعة العربية للدلفي .
السلام عليكــم ورحمـة الله وبركاتــه ،،
بسم الله
1- لا فائدة من استخدام مكونات لا نعرف استخدامها
سأطرح الآن فكرة جيدة .
1- سيكون المشروع عبارة عن Client و Server
من عنوان الموضوع يتضح ان المشروع يعمل على الشبكة و لذلك لا توجد مشكلة في عمل الاتصال
1- لقد قلنا ان المشروع عبارة عن Client و Server
صح
ان كان لدينا شبكة و لتكن شبكة مقهى انترنت متكونة من 8 حواسيب بالاضافة الى الجهاز المركزي
الآن نريد من جميع الحواسيب الاطلاع على الملفات المتاحة للمشاركة و التبادل صح
DBGrid بدل وضع الملفات المتاحة للمشاكة في مكون
2- shared أو أي مكون آخر نفوم بإضافة الى الملف التنفيذي ملف عادي نسميه
بحيث يقوم المستعمل بوضع جميع ملفاته الراغب في مشاركتها داخل المجلد و ينته الأمر سيتمكن من اضافة تعديل حذف ...
* بعد ذلك لن يكون على Client سوى قراءة الملفات الموجودة المجلد
و عندما يريد احضار اي مجلد يقوم بارسال طلب الاحضار و يتنه الامر
ان كان المشروع تريدون منه ان يعمل على الشبكة الخارجية يمكنني ان اطرح فكرة اخرى الا ان تنفيذها يحتاج الى الجد و المثابرة
سلامي
الى الامام
يبدو أني توهت الأخوة
أعذروني على عدم قدرتي على التوضيح
سأقوم بشرح المشروع من البداية
1- هدف المشروع هو عمل مشاركة للملفات على الشبكة المحلية و ليس على الأنترنت
2- المشروع هو client و server في نفس الوقت أي أن المستخدم يستطيع إضافة ملف إلى المشاركة و تحميل ملف من حاسب آخر في نفس المشروع ويمكن عمل المشاركة دون وجود حاسب يقوم بعمل الـ server
3- مراحل العمل
أ- جزء الـ server من المشروع :
يقوم المستخدم بتحديد الملف الذي يريد إضافته إلى المشاركة عن طريق الزر ( ... )
بعد أن يقوم بتحديد الملف يقوم بالضغط على زر ( Add ) الذي سيقوم بإضافة معلومات الملف إلى حقل في قاعدة البيانات
ملاحظات :
1- لن يقوم المشروع بأخذ نسخة من الملف
2- ليس من الضروري حفظ معلومات الملف في قاعدة بيانات لكن المهم أن يتم حفظها بطريقة تسهل إرسال المعلومات
ب- جزء الـ client من المشروع :
يقوم المستخدم بتحديد أسم الحاسب الذي يريد تحميل الملف منه عن طريق الزر ( GetFiles ) الذي يقوم بالإتصال بإسم الحاسب الهدف و جلب معلومات الملفات التي قام الحاسب الهدف بمشاركتها
بعد تحديد الملف المطلوب يقوم المستخدم بالضغط بالزر الأيمن على معلومات الملف الذي يريده و النقر على زر ( download ) فتيطر مربع لحفظ الملف يختار فيه المستخدم مكان حفظ الملف و بعد تحديد مكان الحفظ يتم تحميل الملف و حفظه في المسار المحدد في مربع الحفظ
هذا هو الشكل النظري للمشروع
في حال لم أتمكن من توضيح الفكرة سأقوم بوضع ما تم أنجازه من المشروع لتتوضح الفكرة بشكل عملي
I'm Away For Sometimes
I'll Finish My Works
Come Back Soon
More Study > More Search > More Try > More Learning > Great Success
المرحلة الاولى
اقتباس- لن يقوم المشروع بأخذ نسخة من الملف
اي يبقى الملف في مكانه و عند الطلب نرسله على شكل object داخل الترام الى المتصل الاخر UDP + TCP
اي ClientSocket et ServerSocket
ارجوا اني فهمت هذه المرة
عذا على كثرة اسالتي .
زكيري عبد العالي كتب:عذا على كثرة اسالتي .
أخي زكيري لولا كثرة الأسئلة لما توضحت الفكرة
هل نعتمد على حفظ البيانات في قاعدة بيانات أم هل هناك من اقتراح اخر ؟؟ أرجو شرح الطريقة إن وجد :blush:
I'm Away For Sometimes
I'll Finish My Works
Come Back Soon
More Study > More Search > More Try > More Learning > Great Success
اقترح XML لتخزين المعلومات و بالتالي نرسل القاءمة بعد كل اتصال ثم الملف المحدد على شكل Stream
سؤال اخر هل انتم متأكدين اننا بحاجة الى تطبيق واحد بعتير الخادم و الزبون في نفس الوقت اما كل تطبيق على حد .
زكيري عبد العالي كتب:سؤال اخر هل انتم متأكدين اننا بحاجة الى تطبيق واحد بعتير الخادم و الزبون في نفس الوقت اما كل تطبيق على حد .
أتصور فكرة أن يكون المشروع خادم و زبون في نفس الوقت أسهل في التعامل بالنسبة للمستخدم
هذا من وجهة نظري
I'm Away For Sometimes
I'll Finish My Works
Come Back Soon
More Study > More Search > More Try > More Learning > Great Success
اقتباساقترح XML لتخزين المعلومات
انسى... نحفظها بملف صغير، خفيف، سهل للارسال
اقتباستطبيق واحد بعتير الخادم و الزبون في نفس الوقت اما كل تطبيق على حد
يمكن عمل اثنين لتسهيل الامور برمجيا الان ثم دمجمهما في واحد عند الانتهاء