PDA

View Full Version : فرستادن پیغام به کاربران برنامه تحت شبکه



mpggcobol
چهارشنبه 28 مرداد 1388, 11:35 صبح
من میخواستم تو برنامم امکان فرستادن پیغام را برای کاربران بگزارم
یک تیبل یورز دارم که برای هر یوزر آی پی رو هنگام لاگین کردن پر میکنه
بعد هر موقع کاربری خواست به دیگری پیغام بزنه با سوکت براش پیغام بفرستم

یکی از استادان بنده فرمودند این روش غلط است

می خواستم بدونم ایرادم از کجاست

البته این مساله را هنوز در حد تئوریه

خوشحال میشم دوستان کمک کنن و راه درست را بگن

توجه به اینکه من از کاربران خودم می خوام استفاده کنم و کاری به کاربران اکتیو دایرکتوری ندارم

Happy_davood
چهارشنبه 28 مرداد 1388, 21:36 عصر
البته من هم این روز ها قصد انجام چنین کاری رو دارم ولی هنوز تحقیق نکردم . ولی به نظرم میرسه نیاز به سوکت و ... نباشه . شاید یه تایمر در فرم اصلی برنامه چند دقیقه یکبار یه جدول رو چک کنه کافی باشه . یعنی اگه پیغامی داخل جدول باشه ولکشی کنه و نمایش بده .

البته این روش دوتا ایراد داره . اول اینکه بلادرنگ نیست . دوم اینکه استفاده از تایمر خیلی کار جالبی نیست .

لطفاً شما هم از روش خودتون بیشتر توضیح بدید یا نمونه کد بزارید .

Sociant
چهارشنبه 28 مرداد 1388, 21:46 عصر
شما باید شی ای از سوکت مربوط به اون کلاینت رو تو حافظه در اختیار داشته باشین تا بوسیله اون بتونید پیغام رو ارسال کنید، البته نمیدونم جدولی که گفتین تو دیتابیس هست یا تو حافظه!
با IP تنها نمیشه

meysam_pro
چهارشنبه 28 مرداد 1388, 22:38 عصر
اگر کلاینت ها به دیتابیس کانکت شدن، خودتون رو درگیر سوکت نکنید(خطای فایروال و ...) دنبال مفهومی به اسم Query Notification که تو نسخه ی 2005 به بعد سکوئل فعال شده، بگردین.( Service Notification رو نمیگم اون رو دیگه مایکروسافت پشتیبانی نمیکنه)

raha_20
چهارشنبه 28 مرداد 1388, 22:54 عصر
شما با چی برنامه شبکه رو انجام میدین. با کنترل socket programing که توی vb هم استفاده میشه . یا با کنترل دیگه ای باید این کار را انجام داد.

Sociant
چهارشنبه 28 مرداد 1388, 23:41 عصر
شما با چی برنامه شبکه رو انجام میدین. با کنترل socket programing که توی vb هم استفاده میشه . یا با کنترل دیگه ای باید این کار را انجام داد.
هنوز توفیقی دست نداده که راجع به WCF تحقیق کنم و ببینم میشه یا نه ولی
تا حالا که با کلاسهای موجود در System.Net و System.Net.Sockets این کارو انجام دادم

mpggcobol
پنج شنبه 29 مرداد 1388, 09:17 صبح
شما باید شی ای از سوکت مربوط به اون کلاینت رو تو حافظه در اختیار داشته باشین تا بوسیله اون بتونید پیغام رو ارسال کنید، البته نمیدونم جدولی که گفتین تو دیتابیس هست یا تو حافظه!
با IP تنها نمیشه



ببینید من برای اولین باره که میخواهم این کا را انجام بدم
این جدولی هم که گفتم رو دیتا بیس هستش
من فقط می خواهم یک پیغام از طرف یک کاربر به کاربر دیگه برنامه بفرستم تا بعضی از مسایل اداری آنها را حل کنم
نمی دونم یک چیزی مثل net send هم میشه
از اینکه لطف کردید پاسخ دادید متشکرم

mpggcobol
پنج شنبه 29 مرداد 1388, 09:26 صبح
اگر کلاینت ها به دیتابیس کانکت شدن، خودتون رو درگیر سوکت نکنید(خطای فایروال و ...) دنبال مفهومی به اسم Query Notification که تو نسخه ی 2005 به بعد سکوئل فعال شده، بگردین.( Service Notification رو نمیگم اون رو دیگه مایکروسافت پشتیبانی نمیکنه)
دوست عزیز سپاس گزار اگر مطلب مفیدی دارید بگزارید یا لینک بدید تا استفاده کنم
تشکر

meysam_pro
پنج شنبه 29 مرداد 1388, 13:42 عصر
Using Query Notifications in .NET 2.0 to handle ad-hoc data refreshes (http://www.codeproject.com/KB/database/QueryNotifications.aspx)

Using SqlDependency for data change events (http://www.codeproject.com/KB/database/chatter.aspx)
Avanced SQL 2005 SQLNotificationRequest functionality with C# (http://www.codeproject.com/KB/database/SQLNotificationRequest.aspx)