# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > WCF , Web Services , .Net Remoting >  کمک برای نوشتن چت اینترنتی

## vof.ir

با سلام.
لب کلام این هست که میخواهم
یک برنامه چت اینترنتی بنویسم.
مثل یاهو مسنجر کار کنه
منتهی نه با اون همه امکانات

همین که تکست را از کلاینت 1 به کلاینت مقصد که مثلا کلاینت 2 هست برسونه
کلاینت ها همدیگه را توی لیست ببینند

فکر نکنم با سوکن پروگرمینگ بشه از سرور به کلاینت ارسال کرد.
اصلا میشه از سرور به کلاینت دیتا فرستاد از هر طریقی؟؟//

ممنونم

----------


## persian_bigboy

سلام ، دوست من خیلی قبل تر ها من درباره این موضوع تحقیق کرده بودم و به این نتایج رسیدم . 
1- نیازمند یک وب سرور جهت مجتمع کردن اطلاعات چت ها و انتقال 
2- برنامه نویسی سوکت (که در انجمن زیاد بحث شده)
3- برنامه نویسی WebService
البته به جز وبسرویس راه دیگه هم هست که مورد بحث است و من به دلیل محدود بودن زمانم نمی تونم بگم .
با تشکر از شما
--------------------
راستی یه سری به وب سایت رسمی codeproject.com بزن ، توش نمونه چت زیاد هست .

----------


## HadiGN

سلام
روشهای مختلفی وجود داره (با استفاده از وب سرویس هم میشه)
 این لینک میتونه واسه برنامه چت اینترنتی کمکتون کنه

----------


## xamfia

این یه برنامه چت آنلاین بر مبنای وب سرویس با asp.net
http://xamfia.codeplex.com/البته یه پست فارسی کامل هم تو همین بخش "وب سرویس های سایت برنامه نویس" براش هست که میتونید جستجو کنید و استفاده کنید.

----------


## vof.ir

سلام خدمت شما Xamfia عزیز
من خیلی وارد نیستم. جسارت نیمکنم
اما به نظرم فرق می کنه اینی که من میخوام انجام بشه. من تحت ونیدوز میخوام
فرق نداره؟؟؟؟
من سوالی که برام مطرحی اینه که یاهو مسنجر چه جوری اطلاعات را میفرسته که مثلا اگر 20 نفر هم توی یک LAN قرار داشته باشند همه میتوننند کار خودشون را انجام بدهند

سکوت پروگرمینگه؟  ریموتینگه؟ پروتکل HTTP هست؟؟؟
واقع گیج شدم.
یه چند تا تاپیک هم زدم اما به نتیجه نرسیدم
https://barnamenevis.org/showthread.php?t=241470
https://barnamenevis.org/showthread.php?t=240433

----------


## xamfia

من تو زمینه چت یه زمانی زیاد وقت گذاشتم.تقریبا با تمام این روش هایی که گفتین میتونید برنامه تون رو پیاده سازی کنید اما هرکدوم نقاط ضعف و قوت خودشون رو دارن.وب سرویس ها انعطاف پذیر،راحت و گسترده اند اما سربار داده ای زیادی دارند و از لحاض امنیتی هم چندان قابل اعتماد نیستن.سوکت هم بعد از ایجاد کانال(مخصوصا برای ارسال پیغام و فایل) میتونه به کار بیاد اما کاملتر از همه به نظرم WCF میتونه باشه چون انعطاف و امنیت بالایی داره و هم config base هست و میتونید براحتی تغییرات برنامه تون رو توش اجرا کنید...
نمونه چت با WCF هم تو اینترنت پیدا میشه...

----------


## vof.ir

سلام ممنونم از توجهتون

من هیچ سمپلی ندیدم که بتونه توی نت کار کنه
اونم جوری که بین یوزر های پیغام رد و بدل بشه و چند نفر هم زمان چت کنند
برنامه تحت ویندوز

من سناریوم این هست. httprequest بدم به سرور
سرور منو اد کنه توی یک لیست
بد هم هر پیغامی که میدم حاوی یوزر طرف مقابل باشه و مسیجم
سرور هم مسیج هایی که برای هر یوزر میره را بذاره توی یک صف به همراه نام فرستنده
بد هر یوزری که هر موقع ریکوئست میده به سرور ، سرور هم صف پیغام هاشو واسش بفرسته

اوکی؟

یک سوال دیگه هم دارم اینه که: آقا جان من ( دیگه خیلی خستم) :خیلی عصبانی:  :خیلی عصبانی:  :خیلی عصبانی: 
مگه ما به سرور که آی پی ولید داره ریکوئست نمیدیم؟ خوب،  :لبخند: 
من سوالم اینه که جوابی که میخواهیم از سرور بدیم به کلاینت چه جوری بدیم؟/ آی پیش که ولید نیست؟؟؟
باید از آی اس پیش بگذریم و ....

حالا من موندم که این HTTP چه جوری در جواب یک ریکوئست  ریسپانس میکنه بدونه اینکه ما بهش بگیم که از چه راهی جواب را برگدون؟ :کف کرده!:  :کف کرده!:  :کف کرده!:  :متفکر:  :متفکر:  :متفکر: 
در حقیقت اگر کسی ساز و کار ارسال جواب از طریق HTTP را بدونه مشکل من حل میشه. :تشویق:  :تشویق:

----------


## crazyfull

> یک سوال دیگه هم دارم اینه که: آقا جان من ( دیگه خیلی خستم):عصبا  نی++:
> مگه ما به سرور که آی پی ولید داره ریکوئست نمیدیم؟ خوب، 
> من سوالم اینه که جوابی که میخواهیم از سرور بدیم به کلاینت چه جوری بدیم؟/ آی پیش که ولید نیست؟؟؟
> باید از آی اس پیش بگذریم و ....


وقتی کلاينت به سرور کانکت ميشه و سرور اون رو قبول ميکنه کانال اختصاصی بين کلاينت و سرور ايجاد ميشه و تا زمان باز بودن کانال هر ديتا بين سرور و کلاينت ميتونه رد و بدل بشه و برای فرستادن ديتا لازم نيست آيپی کلاينت رو داشته باشيد

قبل از شروع کار *بايد* با سوکت پروگرمينگ و پروتکل TCP/ip آشنايی کامل داشته باشيد

----------


## sia_2007

دوست عزیز؛ تا زمانی که یه پروتکلی رو انتخاب نکنی که State Less نباشه ( مثلا TCP/IP که بهترینشونه از نظر من)؛ و یه فناوری انتخاب نکنی که از اون پروتکل بتونه استفاده کنه؛ ( مثل Socket Programming و WCF )؛ کارت پیش نمیره.
این طوری که شما پیش میری؛ کلاینتهات هر یه ثانیه یه بار باید یه Request بدن به سرور و بگن؛ آیا پیغام جدید داریم ؛ بعد سرور Response بده ؛ 1- آره داشتی ؛ این بود 2- نه نداشتی
این فاجعست.
---
این طوری که نمیشه عزیزم
بعدش هم یه کم فکر کن؛ مگه هر کی با Skype و IM کار میکنه؛ IP ولید داره ؟
فقط سرور باید IP ولید داشته باشه.
شما مشکل کارت اینه که HTTP ای فکر میکنی نه TCP/IP ای
---
اگه میخوای TCP/IP کار کنی؛  باید بری دنبال netTcpBinding
اگه میخوای روی HTTP ؛ امکان Duplex Communication رو شبیه سازی کنی؛ باید برای دنبال wsDualHttpBinding
البته این ها برای WCF هستش
برای Socket Programming هم از دوستان بپرس
البته من یه خط Socket هم کار نکردم؛ ولی هم تئوری اش قابل قبوله و هم دوستان میگن میشه
WCF اش رو که خودم دارم برای Silverlight و Net. ( به عنوان کلاینت )؛ دارم راه اندازی میکنم
قراره تو کل ایران هم کار کنه.
موفق باشی

----------


## vof.ir

> وقتی کلاينت به سرور کانکت ميشه و سرور اون رو قبول ميکنه کانال اختصاصی بين کلاينت و سرور ايجاد ميشه و تا زمان باز بودن کانال هر ديتا بين سرور و کلاينت ميتونه رد و بدل بشه و برای فرستادن ديتا لازم نيست آيپی کلاينت رو داشته باشيد
> 
> قبل از شروع کار *بايد* با سوکت پروگرمينگ و پروتکل TCP/ip آشنايی کامل داشته باشيد


سلام . ممنونم.
خوب . قربون دهان شما،
اگر  ممکنه یک مثال برای من بزنید، یک نمونه کد. که من قشنگ پیاده سازیشون ببینم.
یک کوچولو. 
توی سوکت پروگرمینگ که باید هر باز که میخواهیم جواب یا درخواست ارسال کنیم بگیم که به کدوم آی پی میخواهیم جواب بدیم.
درسته؟؟؟؟؟
--------------------



> دوست عزیز؛ تا زمانی که یه پروتکلی رو انتخاب نکنی که State Less نباشه ( مثلا TCP/IP که بهترینشونه از نظر من)؛ و یه فناوری انتخاب نکنی که از اون پروتکل بتونه استفاده کنه؛ ( مثل Socket Programming و WCF )؛ کارت پیش نمیره.
> این طوری که شما پیش میری؛ کلاینتهات هر یه ثانیه یه بار باید یه Request بدن به سرور و بگن؛ آیا پیغام جدید داریم ؛ بعد سرور Response بده ؛ 1- آره داشتی ؛ این بود 2- نه نداشتی
> این فاجعست.
> ---
> این طوری که نمیشه عزیزم
> بعدش هم یه کم فکر کن؛ مگه هر کی با Skype و IM کار میکنه؛ IP ولید داره ؟
> فقط سرور باید IP ولید داشته باشه.
> شما مشکل کارت اینه که HTTP ای فکر میکنی نه TCP/IP ای
> ---
> ...


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

WCF را کار نکردم، اما سوکت پروگرمینگ را ممنون میشم اگه حرف من غلط هست یک نمونه کد بگذارند ببینم. شاید دارم اشتباه میگم.
ممنون از توجه همه دوستان

----------


## vof.ir

یک سوال دیگه داشتم اینکه
یعنی WCF بدون اینکه لازم باشه بهش بگیم به کدام IP جواب پس بده،
جواب یوزر را می دهد؟؟؟
من میگم اگر چیزی وجود داشته باشد که مثل HTTP  بر اساس Packet دریافتی بتونه جواب را برگردونه خوبه
فقط این تفاوت را داشته باشه که یکبار که بهش درخواس میدی ، دیگه خودش هر وقت خواست به یوزر جواب برگردونه، و نه در ازای هر درخواست یک جواب

ظاهرا شما عزیزان می فرمائید که ممکن هست،

اگر ممکن هست یک مثال کوچک بزنید.
ممنونم
به خدا مشکل خیلیها که میخواهند چت بنویسند که توی نت کار کنه فکر کنم با این تاپیک به کمک شما حل بشه

----------


## azar89

سلام پس با توجه به صحبت دوستان 
بهترین گزینه برای راه اندازی سیستمی مثل چت روم استفاده از wcf هست؟

----------


## hyperboy

https://barnamenevis.org/showthread.p...Communication)

در اینجا اموزش کامل پیاده سازی چت توسط wcf گذاشته شده

----------

