PDA

View Full Version : حرفه ای: ارسال و دریافت EVENT بین ++C و #C



ano0sh
سه شنبه 18 خرداد 1389, 09:29 صبح
سلام دوستان.
من engine ای دارم به زبان ++C که GUI آن را می خواهم با #C بنویسم.
برای تبادل اطلاعات بین ایندو ، نیاز دارم EVENT هایی که در یکی RAISE شده ، در دیگری HANDLE شود.
البته این کار را با MESSAGE انجام داده ام.(API).ولی به دنبال روش EVENT هستم.کسی می تواند کمک کند؟

ano0sh
سه شنبه 25 خرداد 1389, 08:35 صبح
مدتی پیش سوالی را مطرح نمودم که در فروم بدان جوابی داده نشد.پس از بررسی ،راه های ممکن را یافتم که جهت استفاده سایر علاقه مندان در این قسمت قرار می دهم :

بررسی راه های ارتباط C++ engine با C# GUI :


1-ارسال Message از طریق Windows API و استفاده از WMCPY :

توضیح :
با استفاده از API های ویندوز و ارسال پیام از یک پنجره به پنجره دیگر،امکان ارتباط دو نرم افزار با هم میسر می گردد.
مزایا:
سرعت بالای ارتباط و تبادل پیام.
حجم کد نویسی پایین جهت پیاده سازی
پشتیبانی C++‎ و C#‎

معایب:
عدم امکان ارسال پیام به کنسول
وابستگی دو سیستم به هم از دید معماری

توسعه :
ارتباط کنسول C++‎ با پنجره ی C#‎ از طریق ارسال پیام با موفقیت انجام شد.
این روش در مفسر سوار شد.
ارتباط پنجره ی C#‎ با کنسول C++‎ از طریق اشاره گر با موفقیت انجام شد.

2- استفاده از یک Shared File :

توضیح :
راه دیگر برای ارتباط،استفاده از یک فایل مشترک بود که یک برنامه در آن نوشته و پس از پایان کار،برنامه دوم شروع به خواندن آن می کند.
مزایا :
پیاده سازی ساده
پشتیبانی C++‎ و C#‎

معایب :
سرعت پایین
عدم امکان کار با multithread
3.استفاده از پروتکل IPC ( Inter-Process Communication) :

توضیح :
IPC نام پروتکلی است که در C#‎ .NET Library موجود می باشد که برای ارتباط دو Application توسط روش Inter-Process بکار می رود.

مزایا :
Handle کردن تمامی کارها توسط .NET
سرعت بالا
ریسک پاین
وجود یک استاندارد

معایب :
عدم پشتیبانی C++‎

4.استفاده از Socket Programming :

توضیح :
یکی از روش های استاندارد ارتباط دو نرم افزار با هم،روش Socket می باشد.با استفاده از این روش ،هر دو نرم افزاری روی دو کامپیوتر جداگانه و حتی سیستم عامل های جداگانه،می توانند با هم ارتباط داشته باشند.

مزایا:
ارتباط کاملا استاندارد،امن و کنترل شده
جداسازی کامل دو نرم افزار از لحاظ معماری
سرعت بالا
امکان توسعه سیستم در آینده بصورت چند خط تلفن
امکان راه اندازی یک سرور روی شبکه و اتصال شبیه ساز ها ،یا سیستم ها ی دیگر بصورت کلاینت به آن.

معایب :
احتمال ایجاد مزاحمت FireWall ها
برنامه نویسی پیچیده
توسعه :
ارتباط سرور C++‎ با کلاینت C#‎ با موفقیت انجام گردید.

نتیجه گیری :
پس از پیاده سازی روش ارسال پیام،و سوار کردن روی سیستم،به دلیل دید بلند مدت جهت توسعه سیستم در آینده،کند بودن روش SharedFile و عدم امکان استفاده از IPC در C++‎ ، تصمیم بر استفاده از Socket اتخاذ گردید.

djsohrab2007
یک شنبه 30 مرداد 1390, 00:38 صبح
سلام دوست عزیز ،
میشه لطف کنی هر یک از این 4 روش را توضیح دهی که چه طوری باید در c++ برای آن کد نویسی کرد؟ اگر یک مثال ساده هم برای هر کدام از آنها بگذاری خیلی عالی میشه!

من زبانم داغونه متن انگلیسی نمی توانم بخوانم ، منبع فارسی هم پیدا نکردم اگر میشه لطف کنید توضیح دهید و در صورت وجود منبع فارسی آن را معرفی کنید.

با تشکر از شما - ببخشید وقتتان را گرفتم

djsohrab2007
یک شنبه 30 مرداد 1390, 01:07 صبح
نمی دونم خدا کنه که با این حرفم ناراحت نشی : میشه یک برنامه کنسولی با c++ بنویسی و یک GUI با C# برای آن طراحی کنی و بعد کدهای خود را توضیح دهی ؟ ( با هر یک از روش هایی که نام بردی )
اینجوری بهتر یاد می گیرم

ببخشیدا !

djsohrab2007
چهارشنبه 02 شهریور 1390, 00:44 صبح
کسی جواب نمی ده ؟؟؟؟؟؟؟؟؟؟؟؟؟؟