sfmth (27-07-17)
من که این سوال رو همه جای اینترنت پرسیدم. بذار اینجا هم بپرسم برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
چیزی که میخوام بنویسم یه چیزی شبیه chat هست ولی در عین حال متفات! تفاوتش هم اینه که هیچ سروری وجود نداره (برای همین گفتم p2p).
هر peer توی شبکه فقط IP اونای دیگه رو میدونه و میخواد وصل بشه و در عین حال هم یه Socket باز برای گوش کردن به کانکشنهای ورودی داره.
مشکلم اینجاست که نمیدونم بهترین راحش چیه و اینکه از کجا باید شروع کنم (تازهوارد هم هستم در c#)!
مثالهایی هم که پیدا میکنم همشون سرور دارن. یعنی هر client وصل میشه به اون سرور بعد سرور منتقلش میکنه به client دیگه... من اینو نمیخوام.
با SocketAsyncEventArgs و ست فانکشنهای Async یعنی Send, Receive, Connect,... کار کردم ولی کلی مشکل دارم باهاشون وقتی میرسم به Buffer اینا و قسمت Receive کردن....
الان اینجا گیر کردم.
باز اگه سوالم مفهوم نیست میتونم توضیح بدم. در نهایت هم کد رو روی GitHubام منتشر و Open Source خواهم کرد.
sfmth (27-07-17)
اوپن سورس شد منم خبر کنین پروژه ی عالی هست D:برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط Code Is Law برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
Sent from my SM-J700F using Tapatalk
حالا حالاها کار داره این. برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
Everything Must be Open Source
sfmth (27-07-17)
با سلام،برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط Code Is Law برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
دوست عزیز به شهر سخت افزار خوش آمدید.
این مثال ها برای شروع می تونه خوب باشه:
https://www.codeproject.com/Articles...ike-Chat-Appli
Peer-to-Peer Chat - Advanced! - C# Tutorials | Dream.In.Code
https://blogs.msdn.microsoft.com/the...l-studio-2010/
https://github.com/lontivero/peer2net
اگر با سوکت ها مشکل دارید، مشکل رو دقیقا شرح بدید یا کدی که زدید رو قرار بدید، تا با کمک هم مساله رو بر طرف کنیم.
موفق باشید
آرمینبرای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
'چو ایران نباشد، تن من مباد
Dim Armin As Iranian
If Iran.Enabled = False Then Armin.Enabled = False
AMD>INTEL (30-07-17), Code Is Law (30-07-17)
با تشکر از پاسخت آرمین جان
باید اینا رو تک تک با دقت بعدا مطالعه کنم ولی در نگاه اول:
https://www.codeproject.com/Articles...ike-Chat-Appli
سرور رو جدا از کلاینک کرده..
Peer-to-Peer Chat - Advanced! - C# Tutorials | Dream.In.Code
من فرق UDP و TCp رو دقیقا متوجه نشدم تاحالا ولی با توجه به 1 ذره چیزی که خوندم به گمانم TCP به کار من میاد. پروتوکلی هم براش اینو دارم مینویسم TCP هست.
https://blogs.msdn.microsoft.com/the...l-studio-2010/
WCF برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
https://github.com/lontivero/peer2net
جالبه اینو توی Starهام داشتم و به نظر میاد این دقیقا چیزیه من میخوام برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
توی این چند روز چندتا از مشکلاتم رو حل کردم ولی با مشکلات بیشتری روبرو شدم!اگر با سوکت ها مشکل دارید، مشکل رو دقیقا شرح بدید یا کدی که زدید رو قرار بدید، تا با کمک هم مساله رو بر طرف کنیم.
کدم 1 ذره به هم ریختس الان و نیاز به مرتبسازی و documentation درست حسابی داره. ولی این خلاصهای از قسمتی که مشکل دارم:
https://gist.github.com/anonymous/14...2db8ff819a1e71
سه تا pool دارم که درواقع کلاسی از Stack<SocketAsyncEventArgs> هستن برای 3 تا وظیفه جدا: Accept, Connect, Send&receive
آخری یعنی گرفتن و فرستادن رو با هم با یه SocketAsyncEventArgs (SAEA) انجام میدم که فکر کنم مشکل ازاینجا باشه ولی عجیبه!
توی خط 51 جوابی که میگیرم رو نمیتونم پروسس کنم با MessageManager یا اینکه جواب عجیب غریب میگیرم. منظورم اینه که نصفش از چیزیه که توی Send فرستادم و نصفش چیزیه که Node توی Receive بهم جواب میده!
درضمن با برنامه WireShark چک میکنم چیزی که میفرستم درسته و چیزی هم که میگیرم کاملا درسته ولی توی کد میریزه بهم!
آخرین ویرایش توسط Code Is Law در تاریخ 30-07-17 انجام شده است
Everything Must be Open Source
دوست گرامی، لطفا پروژه ی کامل رو قرار بدید تا بشه روند اجرا رو بررسی کرد.
اگر اصرار به بهره گیری از مکانیزم های Callbackی دارید این مقاله رو مطالعه بفرمایید:
https://www.codeproject.com/Articles...ventArgs-Class
آخرین ویرایش توسط ravegoat در تاریخ 30-07-17 انجام شده است علت: افزودن پیوند
'چو ایران نباشد، تن من مباد
Dim Armin As Iranian
If Iran.Enabled = False Then Armin.Enabled = False
مشکلم رو بالاخره خودم حل کردم به کمک WireShark و بررسی خط به خط چیزایی که میگرفتم.
مشکل توی این تیکه بود: https://gist.github.com/anonymous/14...ive-cs-L51-L58
اینکه من فرضم بر این بود که توی TCP کل چیزی رو که طرف مقابل میفرسته باید توی یه سری بگیرم. درصورتی که هیچ الزامی نداره!
اتفاقی که میافتاد این بود که من 1 بار بافر رو میگرفتم و میرفتم برای آنالیز میدیدم ناقصه. حالا خط 53 بجای اینکه یهو جواب پسم بده برای آنالیز انجام میده، اگه ناقص بود چیزی که گرفتم میره دوباره StartReceive رو صدا میزنه اگه کامل بود بهم اصلاع میده که StartSend رو انجام بدن برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
Everything Must be Open Source
sfmth (03-08-17)
1 کاربر در حال مشاهده این موضوع. (0 عضو و 1 میهمان)
Bookmarks