الشبكة العربية لمطوري الألعاب

خبير  أحمد عبد الغني مشاركة 1

لدي برنامجين منفصلين. كل يقوم بحساباته وإظهاراته. لكن في لحظات معينة يحتاجان لتبادل المعلومات بينهما. كيف؟
أفكاري الأولى أن أعتمد على ملف خارجي على القرص الصلب في مكان ثابت بحيث يكتب أحد البرنامجين عليه والآخر يقرأ وهكذا. لكنه غير آمن على ما أظن.
أية اقتراحات؟

اللهم انصر أهلنا في فلسطين وآجرنا أن نكون عوناً لهم

محترف مشرف عبد اللطيف حاجي علي مشاركة 2

أنظر في CreatePipe()

عبد اللطيف حاجي علي
مبرمج
In|Framez

خبير مدير وسام البهنسي مشاركة 3

هناك أيضاً إجراء ()CreateFileMapping... مشابه للـ pipes، وهو مجرب☺

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

خبير  أحمد عبد الغني مشاركة 4

جميل جداً. الطريقتين متشابهتين. جربت الـ Pipes وهي تعمل. لكن المشكلة أنني بحاجة لأن أقول للبرنامج الآخر أنه:
هناك معلومات جاهزة لك! إقرأها.
ثم يرد الآخر:
انتهيت من قراءتها الآن. وهذا ردي...
.
.
وهكذا.
كيف يمكنني فعل ذلك؟

اللهم انصر أهلنا في فلسطين وآجرنا أن نكون عوناً لهم

خبير  Mohammad Khashashneh مشاركة 5

It sounds like a Network application rather than 2 applications sharing memory.
Anyway, To make this work you need a lot of synchronization and memory management code.

A suggestion is that you place a block of memory ( a structure for example) that contains commands ( Fixed IDs, Function names...) by Program A and make Program B to read this block of memroy and switch or loop through the commands and execute them. But as I said Synchronization is the key. This is only a suggestion that just popped in my mind, Playing with memory can generate a lot of bugs that takes more time to locate and fix.

good luck☺

من سار على الدرب وصل, من جد وجد...
بس عتبك على اللي بيسمع

خبير مدير وسام البهنسي مشاركة 6

يمكنك استخدام الـ Synchronization Objects المتاحة في Windows. هذه الـ objects موجودة بعدة أنواع لتخدم جميع الأذواق (أمزح) أعني الاحتياجات.
في حالتك هذه، أقترح أن تنظر إلى الـ Mutex. هو مجرد flag مشترك عبر النظام ككل يمكن لأي برنامجين متفاهمين على اسمه أن يرفعانه أو يخفضانه أو يتم إعلامهما بتغير حالته باستخدام WaitForSingleObject.

أرجو أن يساعدك هذا

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

خبير  أحمد عبد الغني مشاركة 7

جزيل الشكر للجميع!
الـ mutex كان القطعة الناقصة من الصورة.
كل شيء تمام!

اللهم انصر أهلنا في فلسطين وآجرنا أن نكون عوناً لهم