كيف يمكنني حفظ جميع الصور من الـ Clients
#1
السلام عليكم جميعا
شباب عندي مشكلة في حفظ الصور من الClients
على سبيل المثال 2 كلاينت يرسلون في نفس الوقت صورتين, كيف احفظ الصورتين ؟
ستحفظ صورة واحدة فقط !!
هذا كود الاستقبال في السيرفر
كود :
procedure TForm3.IdTCPServer2Execute(AContext: TIdContext); var fs: TFileStream; begin fs := TFileStream.Create('C:\Documents and Settings\Admin\Desktop\pic\55.png', fmCreate); AContext.Connection.IOHandler.ReadStream(fs, -1, True);
الرد
#2
كود يحفظ كلا صورتيتن لاكنك استعملت نفس الاسم لكلا الصورتين فتحفظ الثانية على الاولى و تختفي الاولى
استعمل اسم دينامكي متربط مع AContext الممرر ك رقم ثريد مثلا
.:: مبرمج شوارع ::.
الرد
#3
Houdini كتب :كود يحفظ كلا صورتيتن لاكنك استعملت نفس الاسم لكلا الصورتين فتحفظ الثانية على الاولى و تختفي الاولى
استعمل اسم دينامكي متربط مع AContext الممرر ك رقم ثريد مثلا

بالفعل أخي يحفظ فوق الأولى, للأسف هذه اول مره أتعامل مع مكونات Indy
لا أفهم هذاالسطر استعمل اسم دينامكي متربط مع AContext الممرر ك رقم ثريد مثلا
شكرا جزيلا
الرد
#4
اوكي اخي راه فهمك بعض امور اساسية في عمل اندي حتى تستوعب امور من اساسها

اندي تعمل بنظام ارسال blocking يعني في سطر ارسال شيئ ما
لن يتم تنفيد سطر الي يليه حتى يتم ارسال بالكامل للبيانات عبر سوكت لدى و لتجنب توقف برنامج عن عمل قاموا بتطوير بجعل عمليات ارسال تتم عبر ثريد لكل زبون متصل يعني كل زبون له ثريد وحده فعند ارسال ستوقف عمل ثريد فقط و لن يتوقف عمل برنامج

اوكي الحين لكل زبون ثريد فادا تعدد زبائن تعددة ثريدات فاستوجب الامر عمل بنية يتم حفظ فيها معلومات كل زبون كرقم ثريد تبعه و رقم قنات اتصال و ايبي تبعه و بورت و غيرها و هته البنية تممر لك في دالة .IdTCPServerExecut من نوع TIdContext

انت حين يمكنك وصول لمعلومات زبونك عبر هته البنية - انت تستعمل اندي 10 وانا استعمل اندي 9 فالبنية مختلفة حسبما ارى - فيمكنك ان تحصل على رقم ثريد منها و تضيفه لاسم صورة حتى تحصل على اسم مختلف حسب كل زبون

هدا كل ما في الامر و انا اختصرت كل هدا في سطر السابق فقط ^^
.:: مبرمج شوارع ::.
الرد
#5
جميل, شرح وافي وكافي, فهمت آلية عمل هذه المكونات, شكرا لك أخي
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم