امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ديسكانت شدن بي دليل يك ارتباط TCP
نویسنده پیام
joker آفلاین
کاربر با تجربه
****

ارسال‌ها: 798
موضوع‌ها: 67
تاریخ عضویت: آذر ۱۳۸۵

تشکرها : 849
( 3655 تشکر در 908 ارسال )
ارسال: #12
RE: ديسكانت شدن بي دليل يك ارتباط TCP
(۲۶-مرداد-۱۳۹۰, ۱۹:۴۴:۴۸)CRazYFULL نوشته است:
(۲۶-مرداد-۱۳۹۰, ۱۵:۱۲:۴۳)joker نوشته است: يعني احتمال ميدم وقتي سرور يك درخواست خاص ميفرسته ، كلاينت داره يه جواب ديگهاز قبل را بهش ميده ، يا جواب همون موقع نميرسه ، يا جا مي افته با يك جواب ديگه جايگزين ميشه و به همين دليل سرور ميبينه كه جواب صحيح نيست ، ريجكت ميكنه

يه راه حل پيشنهاد بدين.

اينطور که ميگی يعنی وقتی سرور منتظر يه نوع پکت هست يه نوع ديگه دريافت ميکنه و کلاينت رو ميبنده
پس بايد قبل از ارسال شدن نوع پکت ها رو مشخص کنی و بدونی چه زمانی چه پکتی بايد ارسال بشه يا چه نوع پکت های ميتونن ارسال بشن

به نظرم يه کلاس کامل برای کار با پروتکل اون سرور بنويس بعد به جای arry کردن سوکت ها اون کلاس رو arry کن

اينطوری هم از به هم ريختگی ديتا تا حد زيادی جلوگيری ميشه و هم اگه بعداً هر تغييری خواستی انجام بدی رو همون يه کلاس انجام ميدی و منظم تر ميشه

از TCP استفاده کرده بودی اينهمه دردسر نداشتی
از TCP نميتونم استفاده كنم و الا 1 ثانيه هم معطلش نميكردم :)

يك مثال ساده براي اين چيزي كه گفتي ميتوني بنويسي ؟


[تصویر:  sajdelogo.gif]
۲۶-مرداد-۱۳۹۰, ۲۰:۵۱:۱۴
ارسال‌ها
پاسخ
CRazYFULL غایب
مدیر بازنشسته
*****

ارسال‌ها: 792
موضوع‌ها: 27
تاریخ عضویت: تير ۱۳۸۵

تشکرها : 1546
( 2836 تشکر در 593 ارسال )
ارسال: #13
RE: ديسكانت شدن بي دليل يك ارتباط TCP
من خودم دلفی کار نيستم ولی دلفی کاران را دوست دارم
با vb.net ميتونم

[تصویر:  1357572546.jpg]

يه چيزه ديگه الان برنامه شما به اين صورت کار ميکنه ديگه يعنی نقش واسطه رو داره و به ازای هر Client يه سوکت هم لود کرده؟
اگه اينطور باشه که نبايد خطايی ايجاد بشه چون برنامه شما فقط نقش انتقال دهنده رو داره هر ديتايی از کلاينت ها گرفته ميشه به server ارسال ميشه و نتيجه رو دوباره به کلاينت ها ارسال ميکنه

۲۷-مرداد-۱۳۹۰, ۱۷:۳۰:۱۹
ارسال‌ها
پاسخ
تشکر شده توسط : joker
joker آفلاین
کاربر با تجربه
****

ارسال‌ها: 798
موضوع‌ها: 67
تاریخ عضویت: آذر ۱۳۸۵

تشکرها : 849
( 3655 تشکر در 908 ارسال )
ارسال: #14
RE: ديسكانت شدن بي دليل يك ارتباط TCP
تقريبا اشكال را فهميدم ( به قول يارو هر سه نفرمون اشتباه كرديم )
از نظر تئوري ارتباط و نحوه چيدمان و انتقال ، همه چيز صحيح هست.
سروري كه دارم بهش وصل ميشم يك سرور بازي هست كه هر 100 ميلي ثانيه يك پكت Syncronize به سمت كلاينت ميفرسته( باكد مشخصه 0x0C ) و كلاينت يك مقدار hash شده را با يك كد مشخصه خاص ( اينجا 0x27 )‌ به سمت سرور ارسال ميكنه
اگه اين مقدار به سرور نرسه يا اشتباه برسه ،يا جابجا برسه ، سرور فكر ميكنه كلاينت ديسكانت شده ، و كانكشن را كلوز ميكنه
نحوه محاسبه اين مقدار هش شده را هنوز پيدا نكردم ، خيلي عجيبه رفتارش !
كد 0x0C و ديتاي اون ثابته ولي از سمت كلاينت رندوم هش ميشه ، بر چه اصولي را نميدونم.


ارتباط چون UDP هست و پك لاست دارم اتفاقي كه مي افته اينه
سرور يك درخواست اعتبار سنجي ميفرسه
كلاينت يا نميگيره پكت را يا اگه پكت را گرفت جواب را ارسال كرد جواب به سرور نميرسه( هر دو به علت پكت لاست )
سرور بيشعرو ميزنه همه چيزا به هم :)

خب حالا چه راه حلي براي اين داستان داريد ؟

يك نمونه پكت هاي رد و بدل شده را ميزارم ( با وايرشارك كپچر شده )
5 پكت آخر بعد از ديسكانتي از سمت كلاينت همچنان در حال ارسال بودند.
آي پي 192.168.1.103 سرور بازي بوده
آي پي 2.146.226.197 كلاينت بازي بوده



فایل‌(های) پیوست شده
.zip   sample-Packet.zip (اندازه: 2.6 KB / تعداد دفعات دریافت: 35)

[تصویر:  sajdelogo.gif]
(آخرین ویرایش در این ارسال: ۲۷-مرداد-۱۳۹۰, ۱۸:۲۲:۴۴، توسط joker.)
۲۷-مرداد-۱۳۹۰, ۱۸:۰۷:۰۴
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  ایجاد امنیت و برقراری ارتباط با SQL Server (در دلفی) Pr0grammer 0 4,210 ۲۰-تير-۱۳۸۹, ۱۱:۱۰:۲۷
آخرین ارسال: Pr0grammer
Rolleyes ارتباط با دیتابیس The.Ghost 1 2,907 ۲۵-اردیبهشت-۱۳۸۹, ۱۱:۰۱:۱۸
آخرین ارسال: lord_viper
Rolleyes ارتباط به اینترنت The.Ghost 1 2,754 ۲۲-اردیبهشت-۱۳۸۹, ۲۳:۲۴:۳۰
آخرین ارسال: lord_viper
  تشخیص ارتباط کامپیوتر ها در شبکه ؟ Majid_Ebru 6 5,519 ۱۸-اردیبهشت-۱۳۸۹, ۱۲:۵۲:۰۳
آخرین ارسال: The.Ghost
  ارتباط با پورت سریال : The.Ghost 2 5,015 ۱۰-بهمن-۱۳۸۸, ۱۰:۴۰:۳۲
آخرین ارسال: lord_viper
Question ارتباط دلفی با دیتابیسی که آپلود شده است؟ The.Ghost 3 5,026 ۱۴-آذر-۱۳۸۸, ۱۸:۱۱:۴۴
آخرین ارسال: lord_viper
  لطفا راجع ارتباط با com port ها ... s_mostafa_h 5 7,288 ۲۳-مرداد-۱۳۸۸, ۱۵:۰۲:۴۱
آخرین ارسال: ahp_online
  كمك : در زمینه ارتباط دلفی با سخت افزار hamed_mp 11 13,305 ۱۴-اسفند-۱۳۸۷, ۱۲:۱۳:۱۲
آخرین ارسال: llena abbaszadeh
  ارتباط با پورت کام peymantrojan 10 12,200 ۲۰-دى-۱۳۸۷, ۰۰:۲۳:۲۷
آخرین ارسال: sita_rampail

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS