View Full Version : حرفه ای: دریافت اطلاعات یک کلاینت در شبکه
arezoo64
سه شنبه 13 مهر 1389, 18:15 عصر
با سلام
من نیاز دارم که یک سری اطلاعاتو از کلاینتام تو شبکه دومین استخراج کنم و اونو بفرستم به سرور دیتابیسم.
چطور میتونم تو شبکه از سرورم در یه بازه زمانی بدون اینکه کاربر چیزی بفهمه یه درخواست به چند تا کلاینت بفرستم که اونا با درخواست سرور اطلاعات مورد نیازو بفرستن به db
لطفا راهنماییم کنید.
خیلی حیاتیه
AmirAmiri
سه شنبه 13 مهر 1389, 18:21 عصر
اگه منظورتون اینه که سرور SQL بیاد اطلاعتی رو در قالبه درخواست برای کلاینت ها یا همون برنامه های در حاله اجرا ارسال کنه و اونا هم در جوابه درخواست، اطلاعاتی رو به سرور SQL بفرستن، باید یگم که نمیشه.
شما نمیتونین دستور SQL رو به برنامه بدید و انتظار داشته باشید که برنامه او رو اجرا کنه. در ضمن نمیتونین از طریق SQL یک دستور رو بدونه اینکه درخواست شده باشه به کلاینت ارسال کنید.
اگه منظورتون همین بوده، بگید تا طوره دیگه ای مسئله رو حل کنیم و راهنماییت کنیم.
arezoo64
چهارشنبه 14 مهر 1389, 15:47 عصر
یه سرور دارم برای دیتابیس
تعدادی کلاینت
و سیستمی که برای گزارش گیری ازش میخوام استفاده کنم.
میخوام به یه طریقی که نمیدونم فعلا بهترین راه چیه
تو شبکه اطلاعات فرضا :رم کلیه کلاینتامو دربیارم و اونارو به دیتابیس ارسال کنم.
البته اطلاعات دیگه ای هم هست اعم از اطلاعات اون یوزری که لاگین کرده به کلاینت و..
اما فعلا مدنظرم ساختار شبکه ای این ارتباط هست که به چه نحوی پیاده سازی بشه بهتره.
چطور میتونم این کارو تو شبکه انجام بدم.
ممنون میشم راهنماییم کنید.
AmirAmiri
چهارشنبه 14 مهر 1389, 17:08 عصر
سلام.
خب ببینید شما میتونید یک جدول توی دیتابیس بسازید که همین اطلاعات توش قرار میگیره.
مثلا یک جدول به نام DeviceInfo تعریف کنید که یک ID و یک DeviceName داره تو این جدول نام تمامه Device هایی که میخواید اطلاعاتش رو بدست بیارید رو بنویسید.
یک جدول دیگه هم طراحی کنید به نام Info و فیلدهای ID و DeviceID و UserID رو توش قرار بدید.
حالا هر کدوم از کاربران که میخواست وارد برنامه بشه (لاگین کنه==>چک کردن یوزر و پسورد) ، اول اطلاعاته اون یوزر از توی این جدول چک بشه و اگه اطلاعات کامل بود یوزر و پسورد ارسال بشه اما اگه فرضا اطلاعات RAM ناقص بود، به جای فرستادن یوزر و پسورد به کلاینت ، بیاد در قالب یک جدول این اطلاعات ناقص (فیلدهای خالی) رو براش ارسال کنه و برنامه هم به محض دریافت اطلاعات (فیلدها) ، اونها رو کامل کنه و برای دیتابیس ارسال کنه و دوباره درخواست یوزر و پسورد بده. سرور دیتابیس هم اطلاعات رو توی همون جدول ذخیره کنه و بعد اطلاعات یوزر و پسورد رو برای کلاینت ارسال کنه تا کاربر بتونه لاگین بشه.
این کلیت کار بود که گفتم. یعنی خوده برنامه باید وجود اطلاعات رو توی دیتابیس بررسی کنه و اطلاعات رو براش بفرسته نه اینکه دیتابیس بررسی کنه و درخواست بفرسته.
امیدوارم واضح بوده باشه هر چند خیلی خلاصه توضیح دادم.
موفق و پیروز باشید.
arezoo64
پنج شنبه 15 مهر 1389, 17:01 عصر
ببینید فکر کنم درست مطلبمو توضیح ندادم
من با کار با دیتابیسش مشکلی ندارم
یه شبکه تحت دومین دارم
میخوام اطلاعات سخت افزاری کلیه کلاینتامو دربیارم
(به صورت لوکال نه)تو شبکه چطور میتونم این کارو انجام بدم؟
همه کلاینتها آیپی خودشونو از dhcp میگیرند.
اگه نخوام از socket programmingاستفاده کنم چه راهی پیشنهاد میدین؟
فرضا صورت سادش اینکه من اسم netbiosی یه کلاینتو بدم ، و اطلاعات سخت افزاریشو فرضا رم همون کلاینتو برام نشون بده.
meysam_pro
پنج شنبه 15 مهر 1389, 21:24 عصر
امکانی به اسم Notification Service تو SQL-Server هست ولی چیزی که شما میخاید رو نمیشه باهاش پیاده سازی کرد.
چیزی که میتونم بهتون پیشنهاد کنم WMI (http://msdn.microsoft.com/en-us/library/aa393964(VS.85).aspx) هستش، البته اگر در دومین Proxy Server دارید روشهای راحتتری رو میتونید انجام بدید به شرطی که دسترسی کامل به سرور داشته باشید.
نرم افزاری که میفرمایید بسیار کاربردی هستش که تو جاهای بزرگ اداری مثل استانداری ها بهش نیاز مبرم دارن!
arezoo64
شنبه 17 مهر 1389, 18:21 عصر
ممنون از پاسختون
میتونید sample یا یه لینک نمونه از پیاده سازی سادش بهم نشون بدین؟
که قابل پیاده سازی باasp.net باشه.
بدون در نظر گرفتن تنظیمات سرور فعلا تو مراحل نخست میخوام فقط یه سری اطلاعاتو از چند تا کلاینتم دربیارم. تو grid نشون بدم.
چیکار باید بکنم؟
بهترین راهی که پیشنهاد میدین چیه؟
میشه یه نمونه کد برام بزارین؟
آیا وب سرویس در این زمینه در ساده سازی کار کمک خاصی میکنه؟
حمیدرضاصادقیان
یک شنبه 18 مهر 1389, 08:21 صبح
سلام.این موردی که شما مطرح کردید ارتباطی به SQL Server نداره.شما میتونی یک Application ساده بنویسی و با استفاده از پروتکلهای TCP به اون سیستم متصل شده و اطلاعات اونو بدست بیارید. این ربطی به SQL Server نداره.فقط میتونید این اطلاعات رو بعد از خوندن در یک جدول ذخیره کنید که اون مشکل خاصی نیست.اگر اشتباه نکنم در دلفی میتونید با استفاده از INDY این کارو انجام بدید.
arezoo64
دوشنبه 19 مهر 1389, 14:56 عصر
اگر نمونه کد دارین ممکنه برام بذارین؟
امکان دریافت اطلاعات با tcp از چند تا کلاینت به طور همزمان هم امکان پذیره؟
بدون اینکه از کلاینت request دریافت بشه؟
میخوام تحت asp.net باشه.
arezoo64
دوشنبه 19 مهر 1389, 14:59 عصر
راهی وجود نداره که من با سوکت این کارو انجام ندم؟
ممکنه راهنمایی کنید.
meysam_pro
دوشنبه 19 مهر 1389, 18:20 عصر
اگر چیزی میخاید که اطلاعات رو از کلاینت ها جمع آوری کنید
1)میتونید رو کلاینت ها نرم افزار نصب کنید، بهترین روش همون Socket Programming هستش
2) نمتونید نرم افزار رو کلاینت نصب کنید، همونطور که عرض کردم WMI (البته در Net.)
امکان دریافت اطلاعات با tcp از چند تا کلاینت به طور همزمان هم امکان پذیره؟
بله، از ابتدایی ترین کارهاست.
بدون اینکه از کلاینت request دریافت بشه؟
کلاینت باید به سرور کانکت بشه ، بعد اون میتونید به طور مثال در بازه زمانی مختلف به سرور داده بفرستید یا اگه نخواید این کار رو بکنید، بایستی یک پیام رو تو شبکه BroadCast کنید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.