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

سلام.
یعنی روش دیگه ای نیست؟ این طرف میگه به سرور کاری نداشته باشیم. چون ترافیک سرور میره بالا. من هر چی میگم بالاخره باید یه جوری لیست رو به سرور بفرستیم قبول نمیکنه. تازه میخواد همیشه لیست ریفرش شده باشه. من یه برنامه نوشتم هر 15 دقیقه کلاینت ها یه پکت کوچولو به سرور میفرستن که آنلاین هستن. هر کی نفرسته از لیست خارج میشه. حالا 500 تا کلاینت هم باشن فشاری به سرور نمیاد. هر پکت در حد چند بایته. سرور هم لیست رو به خود کلاینت ها ارسال میکنه.
طرف میگه یه کلید واسه کلاینت ها باشه هر وقت خواستن روش کلیک کنن لیست ریفرش شه. ولی این که چطور ریفرش شه رو میگه خودت ردیفش کن. تازه به نظر من این جوری ترافیک خیلی میره بالا.
حالا نظر شما چیه؟ خود کلاینت ها با هم در ارتباط باشن و به هم اعلام وجود کنن چطوره؟
پیمان جان تو برنامه های کلاینت سرور که تعداد کلاینت نامعلومه اینجوریه که سرور رو یه پورت در حالت listen قرار میگیره هر کلاینتی که در خواست اتصال بده براش تو سرور یه thread ساخته میشه و اطلاعات مربوط به اون کلاینت در اون نگهداری میشه میتونین از اونجا لیست online ها رو بگیرین
سلام.
مبین من تقریبا از همین روش استفاده کرده بودم. ولی چون برنامه با دات نت نیست نمیتونم از ترد استفاده کنم. ضمن این که نیازی هم به استفاده از ترد نمیبینم. نگهداری اطلاعات هر کلاینت نیازی به ترد نداره.
این روش اصولیه و لی من که گفتم نمیخوام با سرور در ارتباط باشم. روش دیگه چی پیشنهاد میکنید. در واقع غیر اصولی.
ببینم Topology شبکه ای که روش کار میکنی چطوریه ؟؟ ( منظورم اینه که کلاینت ها و سرور چطور بصورت فیزیکی به هم متصل شدن؟)
اگر از طریق Hub یا Switch به هم وصل باشن میتونی همون چیزی رو که گفتی انجام بدی . هر کدوم ار کلاینت ها لیست کلاینت های دیگه آنلاین رو حفظ کنند ( یعنی بین هم رابطه داشته باشن و با سرور کاری نداشته باشن )
هر وقت سرور بخواد کافیه یکی از این کلاینت ها لیست کل آنلاین ها رو برای سرور بفرسته !
خب چرا rang مربوط به ip های dhcp رو ping نمیکنین در صورت لزوم ipscaner های خوبی هم برای این کار وجود داره
سلام.
ممد تپولوژی شبکه رو دقیق نمیدونم چیه. ولی میدونم کلاینت ها با هاب سوییچ با هم ارتباط دارن. ولی خودم اصلا از این روش خوشم نمیاد. خیلی مسخرست. آخه هر کاری یه اصولی داره.
تو این روش هر کلاینتی که میاد بالا باید به کل کلاینت های دیگه آیپیشو بفرسته تا لیست ریفرش بشه. هر 15 دقیقم کل کلاینت ها باید رنج آیپی های شبکه رو اسکن کنن تا اگه کسی دیسی شده بود از لیست خارج شه. اصلا اصولی نیست.
تازه من با اسکن کردم هم یه مشکلی داشتم. مبین سورس اسکنر منظورت هست؟ من وقتی میخوام یه رنج آیپی اسکن کنم از این روش استفاده میکنم.
یه کنترل آرایه ای winsock گذاشتم رو فرم و با اولیش کانکت میشم به اولین کلاینت بعد دومی رو تو حافظه لود میکنم و به دومین کلاینت کانکت میشم همین طور به کل آیپی ها کانکت میشم. بعد تو ایونت connected آیپیش رو ثبت میکنم. ولی مشکلی که داشتم این بود که میگفت بافر کم میارم و ارور میداد.
ای بابا .... اینکاری که شما میخوای انجام بدی کلا اصولی نیست پس دنبال اصول نگرد !

2 راه بیشتر نداره : یک همون Ping کردن کلاینت ها میشه و دو گرفتن Acknowledge از کلاینت ها ( کلاینت ها خودشنو معرفی کنن )
اینطوری بخواهی دونه دونه کنکت بشی سرعت پایین میاد میتونی از thread ها استفاده کنی
(یه سورس دارم که سرعت بالایی داره که از 20 تا thread ایتفاده میکنه البته به دلفی هست)
سلام.
ممد همون 2 تا راهی که من گفتم نمیخوام استفاده کنم.
مبین تو ویبی که ترد نداریم. دات نت بود میشد. ولی از اول ویبی بوده حالام بخوام کل پروژرو ببرم دات نت خیلی درد سر داره.