PDA

View Full Version : مشکل ارسال اطلاعات با UDPClient در اینترنت



h.ranjbar72
جمعه 18 آبان 1397, 01:54 صبح
سلام به همگی

من یه برنامه نوشتم که یه سخت افزار رو کنترل میکنه و چون سمت دستگاه رو با پروتکل UDP پیاده سازی کردند مجبورم منم با همین پروتکل پیش برم وگرنه میرفتم سمت TCP

برنامه من به عنوان سرور و کنترل کننده اصلی هستش و ip ثابت اینترنتی داره و بقیه دستگاهها به سمت ip و port ثابت سرور اطلاعات ارسال و دریافت میکنن. البته میدونم که توی پروتکل udp بحث سرور و کلاینت مطرح نیست فقط روال سیستم رو توضیح دادم (تنظیمات Port Forwarding مودم رو هم انجام دادم)

برنامه تو شبکه داخلی (Local) به درستی داره کار میکنه و هیچ مشکلی نداره ولی وقتی میاد تو اینترنت، اطلاعاتی که دستگاهها ارسال میکنن را درست و کامل دریافت میکنم اما اطلاعاتی که من در جواب واسشون ارسال میکنم اصلا ارسال نمیشه و دستگاهها دریافت نمیکنند.

روال ارسال هم به این شکل هستش که دستگاهها روی هر ip و port ی که اطلاعات فرستادند روی همان ip و port بهشون پاسخ داده میشه و سمت دستگاهها Static ip وجود نداره و همگی public ip دارن

اول شک کردم که شاید شرکت ارائه دهنده اینترنت (ISP) پروتکل UDP رو بسته باشه که با پشتیبانی تماس گرفتم گفت هم پروتکل TCP هم UDP باز هستند و مشکلی وجود نداره. تنظیمات مودم رو هم نگاه کردم بخشی در مورد UDP ندیدم

یه نکته جالب که با نرم افزار Wireshark دیدم وقتی برنامه میاد تو شبکه اینترنت Source Port مدام تغییر میکنه ، مثلا من پورت سمت سرور رو تو کد ثابت گذاشتم 3000 یهو میشه 11820

اگه کسی راه حل را میدونه لطفا راهنمایی کنه واقعا گیر کردم


کد ارسال با UDP به دو صورت :

149229


یا

149230



کد دریافتی اطلاعات UDP :


149231

149232

karim.mashayekhi
شنبه 19 آبان 1397, 16:13 عصر
سلام. در صورتی که در شبکه محلی درست کار میکنه برنامه ات مشکلی نداره. در ضمن شما توی وایر شارک فیلتر میکنی ؟

h.ranjbar72
شنبه 19 آبان 1397, 17:18 عصر
سلام
بله توی wireshark پکت های udp رو واسه مشاهده بهتر فیلتر میکنم
به این نتیجه رسیدم شاید نمیشه روی public ip با udp دیتا رد کرد
با Tcp قبلا کار کردم و مطمئن هستم که با public ip مشکلی نداره و کار میکنه فقط باید سمت سرور ip ثابت داشته باشه چون کانکشن بین سرور و کلاینت برقرار میشه و از همون کانال ارتباطی اطلاعات بین سرور و کلاینت رد و بدل میشه.

h.ranjbar72
دوشنبه 21 آبان 1397, 01:34 صبح
از یکی از آشنایان که UDP کار کرده بود پرسیدم گفت پروتکل UDP توی اینترنت حتما باید دو طرف Static ip داشته باشن که باز اونم حساب کتابی نداره که دیتا اونور درست دریافت بشه و پیشنهاد داد پروتکل رو عوض کنیم و بریم سمت TCP

پروتکل سیستم رو از UDP به TCP تغییر دادیم و مشکل کاملا حل شد با Public ip هم مشکلی نداره :تشویق:

رامین مرادی
دوشنبه 21 آبان 1397, 10:02 صبح
از یکی از آشنایان که UDP کار کرده بود پرسیدم گفت پروتکل UDP توی اینترنت حتما باید دو طرف Static ip داشته باشن که باز اونم حساب کتابی نداره که دیتا اونور درست دریافت بشه و پیشنهاد داد پروتکل رو عوض کنیم و بریم سمت TCP

پروتکل سیستم رو از UDP به TCP تغییر دادیم و مشکل کاملا حل شد با Public ip هم مشکلی نداره :تشویق:
خاصیت کاری پروتکل udp همینه هیچ تضمینی بابت رسیدنش نیست. از این پروتکل معمولا برای موارد کم اهمیت استفاده میشه . چیزی شبیه به انتقال تصویر دسکتاپ(فقط برای مثال)