تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 8 از 8

نام تاپيک: به دست اوردن لیست کلاینت های آنلاین

  1. #1
    مدیر انجمن برنامه نویسی Payman_62's Avatar
    تاريخ عضويت
    Dec 2005
    محل سكونت
    تهران
    پست ها
    2,445

    پيش فرض به دست اوردن لیست کلاینت های آنلاین

    سلام.
    فرض کنید تو یه شبکه 500 تا کلاینت و یه سرور داریم. میخوام سرور لیست همه کلاینت های آنلاین رو داشته باشه و هر موقع کلاینت ها خواستن براشون ارسال کنه.
    نمیخوام از روش اسکن کردن کلاینت ها توسط سرور استفاده کنم و یا نمیخوام کلاینت ها بعد از آن شدن به سرور اعلام وجود کنن.

  2. #2
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    متاسفانه مثل موارد قبلی مشکل نسخه VB من و شما وجود دارد...
    ولی میخواهم بپرسم، این کلاینت های شما به چی سرور قرار است وصل شوند؟؟؟؟؟

    چون میدانید در یک شبکه عادی امروزی، کلاینت و سرور خیلی نسبی است
    رایانه A میتواند به بانک SQLServer رایانه B وصل شود و
    رایانه B میتواند به یک سایت در IIS رایانه A وصل شود.

    حال کدام سرور و کدام کلاینت است؟
    بحث سر این است که کلاینت های شما چه خدماتی از سرور میگیرند، آن برنامه که خدمات میدهد گلوگاه و سرنخ حل مشکل شما است که شاید SQLServer باشد و شاید یک سایت یا وب سرویس در IIS و شاید هم یک برنامه دست ساز سوکتی ....
    چون معمولاً این قبیل برنامه های خدماتی، یک مکانیزم کاربران آنلاین دارند، یا میتوان برایشان ساخت.

    ولی اینکه صرفاً یک رایانه در شبکه روشن شود و رایانه ای دیگر که نامش را سرور گذاشته اید، متوجه روشن شدن آن شود، به نظر من:
    یا راهش اعلام وجود رایانه روشن شده با کدی در Startup است
    و یا یک پروسه تایمیک، با کمک API در ضمینه شمارش رایانه های شبکه که البته همیشه هم چندان دقیق جواب نمیدهد،
    که شما هر دو را هم مردود دانسته اید.

  3. #3
    مدیر انجمن برنامه نویسی Payman_62's Avatar
    تاريخ عضويت
    Dec 2005
    محل سكونت
    تهران
    پست ها
    2,445

    پيش فرض

    سلام.
    راستش این طرف ما نمیخواد با سرور زیاد در ارتباط باشیم. کلا نمیخواد ترافیک سرور بره بالا.
    کلاینت ها توسط برنامه در ارتباط هستن. میگه باید یه کلید تو برنامه بذاری که کاربر کلیک کرد لیست کلاینت ها ریفرش شه. از اون ورم نمیخواد با سرور در ارتباط باشن. یعنی خود کلاینت ها لیست رو به هم بفرستن. ولی این که چطور با هم ارتباط داشته باشن و لیست بین کلشون ردوبدل شه رو میگه خودت ردیفش کن. ولی به نظر من این کار خیلی غیر منطقیه.

  4. #4
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام

    کلاینت ها توسط برنامه در ارتباط هستن. میگه باید یه کلید تو برنامه بذاری که کاربر کلیک کرد لیست کلاینت ها ریفرش شه. از اون ورم نمیخواد با سرور در ارتباط باشن.
    به نظرم چندان منطقی نیست، یک کلاینت تا وقتی به برنامه ای در سرور وصل نشود و خدماتی نگیرید، اصلاً لفظ کلاینت و سرورش معنی ندارد.

    اصلاً همین که میگوید یک دکمه در برنامه تان بگذارید، یعنی برنامه ای در سرور اجرا میشود، پس یک جفت هم در Startup کلاینت میخواهد که البته لزوماً نمیخواهد اینترفیسی داشته باشد و کاربر در کلاینت چیزی ببینید.

    ارسال یک نشانه هم که کلاینت متصل شده در حالت ایده آل یک بایت میشود، نه میگیم ده بایت به جای 500 تا هم میگیم 1000 کلاینت، فرض هم میکنیم هر کدام در زمان های مختلف وصل نشوند و همه در یک لحظه واحد به سرور وصل شوند، سر جمع این ترافیک عظیم میشود 10KByte !!!!

    با کدام معیار قدیم و جدید 10KByte یک ترافیک زیاد به حساب می آید؟


    مثلاً برنامه ی کنترلر، یک کافی نت یا گیم نت را در نظر بگیرید، بالاخره سرور میخواهد کنترلری روی کلاینت ها داشته باشد یا نه؟ میخواهد آنها را از راه دور ریست کند؟ میخواهد تصویر دسکتاپ را ببیند؟ میخواهد....



    همه اینها یعنی کلاینت به مجرد بالا آمدن باید یک برنامه را از Startup یا به صورت WindowsService را اجرا کند، و اگر برنامه ای قرار است، بالا بیاید و اجرای دستورات سرور را برعهده بگیرد، این برنامه کافیست در لحظه بالا آدم یک پیغام کوتاه یک بایتی برای کانکت شدنش به سرور بفرستد، یعنی ارسال اولین پیغام و اعلام وجود.
    یعنی فقط این تک بایت کانکت اولیه جرم است؟ و بقیه ارتباطات که حتماً حجم بالاتری دارد، مشکل ندارد و بلامانع است.


    یک توصیه دیگر هم میتوانم بکنم، که چندان برنامه نویسی نیست!
    وقتی با فرد غیر برنامه نویس زبان نافهمی مواجه میشوید که مثلاً میگویید، یک دکمه بزنم Photoshop بیاید یا یک دکمه دیگر بزنم Word بیاید یا ....
    اصلاً نمیخواهد روند کار برنامه را برایش تجزیه و تحلیل کنید که مثلاً بعدش هم بگوید، نمیخواهم هیچ برنامه اضافه ای با ویندوز بیاید بالا یا بگویید برنامه ها به هم وصل نباشد و با وردهای جادویی کار کنند!!!
    شما بگویید، باشه قبوله، چشم! بعدش هم خودتان هر کاری میخواهید بکنید! گفتن چشم به همچین افرادی به نظرمن چندان الزام آور اخلاقی نیست.
    برای همچین فردی نمیشود توضیح داد، شما نمونه برنامه سرور را نصب میکنید و میگویید برای کار کردنش نیاز به اجرای 'ورد جادویی مورد نظر' یا 'تنظیم' یا 'اضافه کردن قابلیتی' در ویندوز کلاینت ها دارید (دروغ هم نگفته اید!) بعد در این فرآیند اضافه کردن قابلیتی به کلاینت، می آیید و برنامه سوکتی مناسب را برای ارتباط در کلاینت نصب و برای شروع با ویندوز رجیستر میکنید.

    مجدداً تاکید میکنم که دروغ هم نیست، تمام سرویس ها پشتیبان ویندوز هم همینطور هستند، یک برنامه کوچک هستند که با ویندوز بالا می آیند و قابلیتی را به ویندوز اضافه میکنند، مثل قابلیتی که شما میخواهید و ویندوز ندارد،
    Print Spooler
    Task Scheduler
    Themes
    Plug and Play
    و...
    همه اینها جزء ذات هسته ویندوز نیستند و به صورزت یک سرویس مجزا با ویندوز بالا می آیند و قابلیتی را به آن اضافه میکنند.
    Last edited by _H2_; 30-07-2008 at 15:29.

  5. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  6. #5
    مدیر انجمن برنامه نویسی Payman_62's Avatar
    تاريخ عضويت
    Dec 2005
    محل سكونت
    تهران
    پست ها
    2,445

    پيش فرض

    سلام.
    دوست عزیز ممنون از راهنماییتون.
    اول باید بگم طرف خودش این کارست و یه کارمند ساده شرکت نیست. وگرنه بی کار نبودم که براش توضیح اضافه بدم. میگفتم همینی که هست. چون واقعا هم راه اصولی دیگه ای وجود نداره.
    بعد هم تمام این موارد رو براش توضیح دادم. گفتم هر 15 دقیقه چند بایت از هر کلاینت ارسال میشه. رو هم مگه میشه چند بایت؟ کلشو بذاری رو هم 1 کیلو بایت نمیشه. ولی قبول نمیکرد. میگفت 100% روشی هست که حرفه ای تر باشه و کمتر به سرور فشار بیاره.
    روشی که کلاینت ها با هم در ارتباط باشن و لیست بینشون رد و بدل شه. اصلا اصولی نیست. ولی ظاهرا یه همچین روشی میخواد.

  7. #6
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Jul 2006
    محل سكونت
    ++3D
    پست ها
    259

    پيش فرض

    سلام آقا پیمان!

    ببخشید که توی این موضوع دخالت میکنم (من شاگرد شما هستم -- نباید توی موضوع استادم دخالت کنم).

    استاد جان من یه نظریه به ذهنم رسید گفتم بگم بلکه عملی شه و مشکلت حل بشه...

    خوب شما برای هر کلاینتی که آن میشه لازم نیست از طریق سرور به همه کلاینت ها اعلام کنی!
    کافیه به اولین کلاینت آنلاین بگی که فلان کلاینت آن شد و همین کلاینت این خبرو به کلاینت دوم -- و اونم به سوم تا آخر (نظریه یک کلاغ چهل کلاغ ) و به این صورت سرور تنها فشاری رو که متحمل میشه برای هر کلاینت یک پیغام همین -- و بقیه توسط کلاینت ها به ترتیب تا آخر میره...

    امیدوارم که منظورم رو گرفته باشی -- و همینطور امیدوارم مشکلت حل بشه

  8. این کاربر از Smafias بخاطر این مطلب مفید تشکر کرده است


  9. #7
    مدیر انجمن برنامه نویسی Payman_62's Avatar
    تاريخ عضويت
    Dec 2005
    محل سكونت
    تهران
    پست ها
    2,445

    پيش فرض

    سلام.
    اختیار دارید. شما خودتون استادین.

    روش جالبیه. ولی مشکلاتی هست. تو رنج آیپی همه آیپی ها باید موجود باشه. اگه وسط رنج یه آیپی آن نشده باشه عمل انتقال لیست نیمه کاره میمونه. به همین دلیل هر سیستم ابتدا باید چک کنه کامپیوتر بعدی آن شده یا نه اگه شده بود لیست رو براش بفرسته و اگه نشده بود بره سراغ بعدی. مهمترین مشکل. اگه زمانی کسی آف شه لیست ریفرش نمیشه. به همین دلیل باید هر 15 دقیقه از ابتدا لیست ارسال شه. اگه برای مثال 500 تا کلاینت موجود باشه ریفرش کردن لیست خیلی طول میکشه.

  10. #8
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Jul 2006
    محل سكونت
    ++3D
    پست ها
    259

    پيش فرض

    خوب میدونستم بد توضیح دادم!
    ولی آخه اینجا نمیتونم دقیق موضوع رو تشریح کنم.

    شما یه لطفی کن آیدیتو با پ.خ برام بگو -- بلکه اونجا بتونم درست و حسابی منظورو برسونم...

    راستی ببخشید که دیر جواب دادم -- شرمنده

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •