PDA

View Full Version : تبدیل کد برای پذیرش چندین درخواست اتصال به برنامه سمت سرور



Direlap
شنبه 27 خرداد 1391, 22:39 عصر
سلام

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


Socket mainSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
ipEnd = new IPEndPoint(ipAdd, Convert.ToInt32(portNbr));
mainSock.Bind(ipEnd);
mainSock.Listen(maxClient);
handler = mainSock.Accept();


حالا این کد رو چطوری تغییر بدم تا چند تا کاربر بتونن همزمان به برنامه وصل بشن ؟

با تشکر از همتون

Saeed_m_Farid
یک شنبه 28 خرداد 1391, 09:32 صبح
بجای Accept از BeginAccept (http://msdn.microsoft.com/en-us/library/5bb431f9.aspx) باید استفاده کنید، این تابع یک delegate (از نوع System.AsyncCallback (http://msdn.microsoft.com/en-us/library/system.asynccallback.aspx)) بعنوان ورودی میگیره که درون اون شما کاری رو که قراره با کلاینت بکنید بهش میگین؛ معمولاً هم توی اون اول EndAccept (http://msdn.microsoft.com/en-us/library/chfa7866.aspx) میکنن و بعدش BeginReceive (http://msdn.microsoft.com/en-us/library/3sah14d0.aspx) و ...

Direlap
یک شنبه 28 خرداد 1391, 15:03 عصر
با روش ساده تر دیگه ای مثل نخ ها و یا دیگر روش ها میشه کاری کرد ؟

راستش با این روش آشنا نیستم . اگه این روش رو ترجیح میدین برم سراغش .

حالا این کدی که من استفاده کردم asynchronous هست یا نه ؟

Saeed_m_Farid
یک شنبه 28 خرداد 1391, 17:22 عصر
با روش ساده تر دیگه ای مثل نخ ها و یا دیگر روش ها میشه کاری کرد ؟
راستش با این روش آشنا نیستم . اگه این روش رو ترجیح میدین برم سراغش.
حالا این کدی که من استفاده کردم asynchronous هست یا نه ؟





روشهایی که به ذهنم میرسید رو اینجا لیست کردم : تاپیک جامع چت! (http://barnamenevis.org/showthread.php?346552-%D8%AA%D8%A7%D9%BE%DB%8C%DA%A9-%D8%AC%D8%A7%D9%85%D8%B9-%DA%86%D8%AA%21)
من که نباید ترجیح بدم، شما هرکدوم رو تمایل دارین ادامه بدین؛ ما هم در کمک رسانی در خدمتیم
نه نیست! با اون کارهایی که تو پست قبلی گفتم میشه asynchronous