PDA

View Full Version : سوال: فرستادن و گرفتن پيام به تمامي كاربراني كه از طريق RemoteDesktop به Server متصلند



az-navaei
چهارشنبه 22 خرداد 1387, 19:16 عصر
باسلام
من برنامه اي دارم كه رويه Server نصب ميشه و بقيه ي Client ها از طريق Remote Desktop به سرور متصل مي شوند و برنامه را اجرا مي كنند قبلا كه از طريق Sharing استفاده مي كردم وقتي يك نفر اطلاعات را از طريق adoquery وارد مي كرد براي اينكه بقيه هم اين اطلاعات را ببينند از طريق كامپوننت براي بقيه ي سيستم هاي داخل شبكه پيام ميفرستادم كه بانك هاي خود را Requery كنند ولي پيام در حالت Remote Desktop به client ها نمي رسد.من از SqlServer2000 استفاده مي كنم.كسي ميتونه راهنمايي كنه؟

اصغر (پآچ)
چهارشنبه 22 خرداد 1387, 19:58 عصر
سلام دوست من

یه دستور توی ویندوز XP هست که می تونه با استفاده از نام کامپیوتر پیام در سطح شبکه ارسال کنه که به صورت زیر است:


Net send {name | * | /DOMAIN[:name] | /USERS} message


اما یه سوال چرا از طریق RDC به برنامه ات متصل می شن مگه کامپیوتر ها تحت دامین نیستند؟ چرا از بانک اطلاعاتی SQL Server استفاده نمی کنی که مشکل پیام فرستادن به کاربران رو نداشته باشی؟
موفق و موید باشی

az-navaei
پنج شنبه 23 خرداد 1387, 12:22 عصر
در حالت Remote Dektop برنامه روي يك دستگاه نصب ميشه و بقيه از طريق Remote به اون وصل ميشن بنابراين اگر سيستمي دچار مشكل شد به برنامه آسيبي نمي رسه و در ضمن كليه ي تنظيمات روي server انجام مي شه و مزاياي ديگه.....
و اينكه گفتين از SQL Server استفاده كنم ميشه بيشتر توضيح بدين چون بانك اطلاعاتي من SQL Server هست.
با تشكر

اصغر (پآچ)
پنج شنبه 23 خرداد 1387, 13:30 عصر
سلام دوست من

ببین وقتی از Sql استفاده می کنی و تحت یه شبکه می خوای یه برنامه رو اجرا کنی فقط کافیه تو ConnctionString مربوی به ADOQuery یا هر دیتاست دیگه ای که به SQL متصل میشه نام اون کامپیوتری که بانکت توش هست به عنوان DataSource قرار بگیره حالا هر کامپیوتری که تو شبکه اون نرم افزار رو به صورت Local اجرا کنه می تونه از اون بانک که اغلب روی سرور قرار داده میشه استفاده کنه و هیچ مشکلی هم برای وارد کردن اطلاعات و بروز رسونی اونها نخواهی داشت

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

az-navaei
پنج شنبه 23 خرداد 1387, 22:39 عصر
از لطفتون متشكرم ولي متاسفانه نشد يعني وقتي به طور مثال يك كاربر يك رديف را اضافه مي كنه كاربر دوم اون رديف را نمي بينه مگر اينكه من هر چند دقيقه يكبار adoquery را requery كنم كه البته فكر خوبي نيست.

اصغر (پآچ)
پنج شنبه 23 خرداد 1387, 23:58 عصر
سلام دوست من

خوب تو می تونی در رویداد AfterPost بگی که کوئری رفرش بشه این خیلی راحتتره تا بخوای به تمام کاربرات پیام بفرستی اینجوری ترافیگ شبکه ات زیاد میشه و امنیت خیلی خیلی کاهش پیدا میکنه چون همه کاربرا باید به سرور بصورت ریموت دسترسی داشته باشن!

موفق و موید باشی

FirstLine
جمعه 24 خرداد 1387, 16:32 عصر
با سلام
ن خیلی وقت پیش یه پروژه اینجوری داشتم و بصورت زیر عمل کردم:
دیتابیس SQL روی سرور بود.
یه جدول LastUpdate داشتم که زمان آخرین تغییر و بروزرسانی را در اون log میکردم یعنی اینکه هر کدام از کلاینتها که اطلاعاتشون رو اضافه، تغییر و حذف میکردن مشخصات اون Table در این جدول ذخیره میشد.
شما میتونی در برنامه کلاینتها هم یه تایمر بگذاری و تعداد رکوردهای این جدول LastUpDate راا چک کند که هر وقت اطلاعات تغییر پیدا کرد به کلاینتها یه پیغام بدهد
البته با این روشی که گفتم میتونی مشخص کنی که کدام یک از جدولها تغییر پیدا کرده و فقط اون جدول را رفرش کنی و لازم نباشه با رفرش کردن همه کوئری ها ترافیک شبکه را زیاد کنی.
در روش ریموت دسکتاپ اگه یکی از کلاینتها شیطنت کنه، بدجوری حالت گرفته میشه.
با تشکر

az-navaei
شنبه 25 خرداد 1387, 08:47 صبح
سلام.
راه حلتون خوب بود.
ميشه بگين كلاينتها چه شيطنتي ممكنه بكنن؟؟؟

اصغر (پآچ)
شنبه 25 خرداد 1387, 23:03 عصر
سلام دوست من
خوب شاید تنظیمات سرور رو دستکاری کنن
در ضمن من هیچ جا ندیدم که به تمام کاربران اجازه استفاده از سرور به صورت ریموت داده بشه
این یعنی امنیت صفر

موفق و موید باشی

FirstLine
دوشنبه 27 خرداد 1387, 08:11 صبح
سلام.
راه حلتون خوب بود.
ميشه بگين كلاينتها چه شيطنتي ممكنه بكنن؟؟؟

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