PDA

View Full Version : سوال پیرامون winsock



hector2000
سه شنبه 24 اردیبهشت 1387, 00:12 صبح
با سلام
من یک برنامه چت(تحت شبکه) با استفاده از winsock نوشتم
خواستم بپرسم اگر در winsock اگر همزمان چند تا پیغام از طرف کلاینت ها به سرور بیایید ایا wisock قادر به دریافت انها هست و یا اینکه قاطی می کند(فرض کنید چندتا کلاینت همزمان پیغام را ارسال کنند)
ممنونم

Mbt925
سه شنبه 24 اردیبهشت 1387, 00:23 صبح
روش معمول کار اینه:

یه winsock برای دریافت درخواست ها قرار داده میشه و به ازای هر درخواست یه winsock اه جدید ایجاد می کنه تا با درخواست دهنده ی مربوطه وصل بشه.

برای ایجاد winsock های جدید کافیه آرایه ای از winsock ها ایجاد کنید و هر بار یک شیء جدید از اون لود کنید.



Load WinSock1( Index)

مهران رسا
سه شنبه 24 اردیبهشت 1387, 08:55 صبح
با سلام
من یک برنامه چت(تحت شبکه) با استفاده از winsock نوشتم
خواستم بپرسم اگر در winsock اگر همزمان چند تا پیغام از طرف کلاینت ها به سرور بیایید ایا wisock قادر به دریافت انها هست و یا اینکه قاطی می کند(فرض کنید چندتا کلاینت همزمان پیغام را ارسال کنند)
ممنونم


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

hector2000
سه شنبه 24 اردیبهشت 1387, 10:35 صبح
معتقدم اگر به جهت دریافت از ارایه ای از winsock و همچنین به جهت ارسال از یک لیست کار(در درس سیستم عامل همون job list)که در اصل ارایه ای از کارهاست ، استفاده کنم مشکل حل خواهد شد.
استفاده از پورت جداگان کار را سخت خواهد کرد(اگر این پورت را سرور تعیین کند چگونه کلاینت از ان با خبر شود؟دردسرش زیاده)

meysam_meysam74
سه شنبه 24 اردیبهشت 1387, 12:32 عصر
دوست عزیز شما باید تویه رشته هایی که برایه شما میاد سرچ کنید
مثلا اگه کلاین یک یه پیم میده ممکنه به علت پایین بودن سرعت اینترنت این پم زود به دست شما نرسه
خوب اونوقت اگه طرف یه پی ام دیگه بده دوتا یا سه تا پی ام با هم برایه شما میاد خوب اینو نیشه کاریش کرد شما باید تویه رشته هایی که میگیرین سرچ کنید و سرو ته پم ها رو تویه کلاین مشخص کنید من فکر می کنم تنها راش همینه

hector2000
سه شنبه 24 اردیبهشت 1387, 14:08 عصر
دوست عزیز این یک سیستم چت انلاین و از طریق اینترنت نیست بلکه یک سیستم چت تحت شبکه داخلی(local) است و قرار است به برنامه مدیریت گیم نت(مانند game port) تبدیل بشه
از پیشنهادتون ممنون

مهران رسا
سه شنبه 24 اردیبهشت 1387, 18:06 عصر
(اگر این پورت را سرور تعیین کند چگونه کلاینت از ان با خبر شود؟دردسرش زیاده)


سلام .

کار برنامه نویس همینه ؛
شما هستی که تعیین می کنی کلاینت ها از طریق چه پورتی به سرور متصل بشن .

hector2000
سه شنبه 24 اردیبهشت 1387, 19:56 عصر
ایا راهی هست که بتوانیم از تعداد کامپیوترهای متصل به شبکه با خبر شویم؟
فرض کنید که اصلا از طریق برنامه به سرور متصل نیستند و می خواهیم که تعداد انها و همینطور اطلاعات دیگری از انها را بدست بیاریم
ایا با winsock این کار امکان پذیر است یا خیر؟

hector2000
چهارشنبه 25 اردیبهشت 1387, 11:30 صبح
هیچ پاسخی نیست؟

مهران رسا
چهارشنبه 25 اردیبهشت 1387, 11:59 صبح
مگر اینکه یکی یکی IP کلاینت ها رو برای سرور تعریف کنی ...

bobrus
چهارشنبه 25 اردیبهشت 1387, 14:04 عصر
اين روشي كه ميگم شايد زياد منتطقي نباشه ولي كار راه اندازه
از دستور زير استفاده كن


net view >c:\ip.txt

با اينكار ليست همه كامپيوترها توي يه فايل به نام IP.txt ذخيره مي شه و مي توني با شمردن خطهاش به تعداد كامپيوترهاي شبكه پي ببري و البته اسامي تمامي كامپيوتر هاي توي شبكه رو هم داري
البته اين يه دستور داسه كه بايد از تو Vb اجراش كني

hector2000
پنج شنبه 26 اردیبهشت 1387, 11:37 صبح
روش بهتری وجود ندارد؟

ABERTINO
دوشنبه 06 خرداد 1387, 08:59 صبح
روش بهتر هم وجود داره استفاده از Api . من يه نمونه داشتم ولي متاسفانه هرچي دنبالش گشتم پيداش نكردم

ASKaffash
دوشنبه 06 خرداد 1387, 09:58 صبح
با سلام
دوست عزیز پاسخ Mtb925 کاملترین است چون در MSDN برای مدیریت چند Client از طریق یک سرور خودش اینکار را انجام داده بد نیست مثال داخل MSDN را نگاه کنید