• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
استفاده از پورت و udp
#1
سلام
من یک سخت افزار دارم که اطلاعات خاصی را بر روی یک ip valid با پروتکل udp بر روی یک پورت که ما باید تعیین کنیم ارسال می کند ولی من اصلا نمی دانم چطوری باید با این پروتکل و پورت کار کنم.
اصلا هیچ چیزی در این باره نمی دانم
کسی اطلاعاتی دارد که به من کمک کند؟
  پاسخ
تشکر شده توسط :
#2
یعنی هیچکس بلد نیست. من را کمک کنه؟
  پاسخ
تشکر شده توسط :
#3
رضا آخه هیچ اطلاعاتی رو ندادی چطور کمک کنیم؟
مثلاً
اصلاً این سخت افزار چی هست؟ چکار می کنه؟
برای چی می خوای اینکارو بکنی؟
خود سخت افزار که به سیستم وصل بشه(چه usb چه ps2) خودش شناسایی میشه دیگه؟ نیازی به دستکاری نداره که؟
به ip remote وصل میشه و به اون اطلاعات میفرسته؟
چه اطلاعاتی معمولاً؟
برای چی و با چی می خوایی به پورتش وصل بشی؟
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط : hidensoft
#4
دستگاه به سیستم وصل نمی شود بلکه اطلاعات را ارسال می کند
این دستگاه اطلاعات را با سیم کارت و gprs بر روی یک ip و پورت خاص با پروتکل UDP می فرستد
  پاسخ
تشکر شده توسط :
#5
کلا با سوکت کار کردی؟
مثلا وقتی با سوکت های PHP به یک سایت وصل میشی و درخواست GET یا POST میفرستی.
برای ارتباط UDP هم از سوکت استفاده میشه.
ارتباط TCP برای HTTP استفاده میشه؛ UDP هم یه کاربردهای خاصی داره بعضی جاها.

در UDP شما مثل TCP مفهوم کانکشن ندارید و همینطوری به یک IP یک Packet رو میفرستید به امان خدا. این Packet ممکنه اصلا به مقصد نرسه، ممکنه ترتیب دریافت Packet های ارسال شده و دریافت شده یکی نباشه، حتی ممکنه از یک Packet چند کپی به مقصد برسه، و در نهایت ممکنه اصلا در سمت دریافت کننده برنامهء هدف درحال اجرا و گوش دادن نباشه و بنابراین Packet شما با وجود رسیدن به رایانهء هدف از بین بره. بخاطر همین برنامه هایی که با پروتکل UDP کار میکنن معمولا این موارد رو خودشون هندل میکنن و بنابراین برنامه نویسی حجیمتر و پیچیده تر و برنامه نویس حرفه ای تری میخواد. البته بستگی داره کاربرد و نیازهای برنامه چی باشه. اگر خیلی ساده باشه که خب مشکل زیادی نداره.
  پاسخ
تشکر شده توسط : oia
#6
یعنی اطلاعات به صورت get و یا post نیستن؟
همین طور کشکی می فرسته!
بعد ما باید آنهایی که به مقصد رسید را دریافت کنیم و ازش استفاده کنیم؟
راستی این فایل php که ما می نویسیم در جای خاصی از هاست باید باشه؟ یا اسم خاصی باید داشته باشد؟
  پاسخ
تشکر شده توسط : zoghal
#7
(۱۳۹۱ خرداد ۰۴, ۱۱:۵۱ ق.ظ)rezaweb نوشته: یعنی اطلاعات به صورت get و یا post نیستن؟
همین طور کشکی می فرسته!
آره اون GET و POST مربوط به پروتکل HTTP هست که پروتکل HTTP هم خودش بر روی پروتکل سطح پایینتر TCP اجرا میشه. کار TCP اینه که از رسیدن صحیح تمام Packet های دیتا اطمینان حاصل کنه؛ به فرمت داده ها و معنا و پروتکل اونا کاری نداره. شما بعنوان برنامه نویس فقط اطلاعات مربوط به پروتکل HTTP رو با استفاده از سوکت TCP میفرستی و دریافت میکنی و به مسائل فنی سطح پایین و مدیریت ارسال و خطا در سطح بسته ها و اینها کاری نداری؛ این کارها بصورت خودکار توسط TCP انجام میشن.

ضمنا شما مجبور نیستی روی TCP فقط از پروتکل HTTP استفاده کنی. معمولا از پروتکل HTTP استفاده میکنیم چون میخوایم با یک نرم افزاری که با این پروتکل کار میکنه ارتباط برقرار کنیم. وگرنه سوکت TCP کاربردهای زیادی داره و در نرم افزارهای شبکه با پروتکل های مختلف بکار میره.
با سوکت TCP میتونی از هر نوع پروتکل دیگه استفاده کنی یا حتی صرفا داده های خام خودت رو بفرستی (مسلما برنامه های دو طرف باید زبان هم رو بفهمن و بدونن این داده ها چیه تا ازش استفاده کنن). خیلی وقتا هم یک نیمچه پروتکل اختصاصی باید نوشت برای کاربردهای سفارشی.

حالا UDP چیه. UDP هم مثل TCP محدود به یک پروتکل خاص نمیشه (روی اون میشه پروتکل های دیگر رو سوار کرد)، اما مدیریت ارسال و دریافت سطح پایین رو هم انجام نمیده و اینا میفته گردن برنامه نویس. یعنی شما مثلا داده ای رو ارسال کردی باید یه مکانیزمی هم برای اطمینان از دریافتش توسط گیرنده بذاری و اگر دریافت نشده بود دوباره ارسال کنی و از این حرفا.
UDP با اینکه اینقدر امکانات کمی داره و کار باهاش سخت تره اما کاربردهای خودش رو داره به دلیل بعضی خواص و مزایایی که داره. مثلا DNS هم از UDP استفاده میکنه.

یکی دیگر از کاربردهای UDP در Streaming داده های صوتی و ویدئویی هست. چون در اینطور کاربردها (پخش مستقیم صوت و ویدئو از طریق اینترنت یا شبکه) اگر یک بسته ای به مقصد نرسه معمولا برای ارسال مجددش دیگه دیر شده و صوت یا فیلم پخش شده از اون قسمت عبور کرده (زمان لازم برای مطلع کردن فرستنده و ارسال و دریافت مجدد اون برای کاربردهای Real time معمولا بیش از حد زیاده)، و از طرف دیگه معمولا با مقدار کمی Packet loss که بصورت طبیعی پیش میاد پخش صوت و ویدئو مشکل جدی پیدا نمیکنه و مکانیزم تشخیص و ارسال و دریافت مجدد لزومی نداره یا صرف نمیکنه، و از طرف دیگه اگر از TCP استفاده میشد اونوقت اون ارتباطات و داده های اضافی که برای تایید رسیدن بسته ها و غیره بین دو طرف رد و بدل میشد جز تلف کردن پهنای باند و زمان کاری انجام نمیدادن. بخاطر همین UDP در انتقال صوت و ویدئوی Real time کاربرد زیادی داره.

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

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

حالا نرم افزارهای پیشرفته مسلما کلی فرمت و قواعد دیگه هم دارن. و شاید یکسری فرمانهایی که برای خودشون تعریف کردن و غیره. پروتکل HTTP هم چیزی نیست جز یکسری قواعد و قرارداد برای فرمت و فرمانها و غیره. همهء پروتکل ها همینطور درست میشن. آدم خودش هم میتونه پروتکل درست کنه، ولی بهتره حتی الامکان از پروتکل های استاندارد و عمومی استفاده کنه تا سازگاری و راحتی بیشتری داشته باشه. مثلا اگر یک کاری رو میشه با پروتکل HTTP هم انجام داد، معمولا کسی نمیاد پروتکل اختصاصی خودش رو درست کنه یا داده ها رو بصورت (تقریبا) خام و بدون پروتکل ارسال کنه.

نقل قول:راستی این فایل php که ما می نویسیم در جای خاصی از هاست باید باشه؟ یا اسم خاصی باید داشته باشد؟
فایل برنامهء سوکت رو میگی؟
نه نیاز به مکان و اسم خاصی نداره. مثل بقیهء برنامه های PHP است.
فقط باید امکان استفاده از سوکت فعال باشه. روی بعضی شیرهاست ها ممکنه سوکت رو بسته باشن، و ضمنا اگر برنامت بخواد دیتا رو دریافت هم بکنه (یعنی روی پورت خاصی توسط سوکت دریافت هم بکنه) یا اصلا در نقش یک سرور باشه برای خودش، اونوقت با شیرهاست نمیشه و نیاز به VPS ای چیزی داره.
  پاسخ
تشکر شده توسط : rezaweb zoghal
#8
البته اینم باید اضافه کنم که استفادهء بنده از اصطلاح Packet یا بسته در این مطلب از نظر تخصصی دقیق نبوده. چون اصطلاح Packet در سطح پروتکل IP استفاده میشه، اما ما داریم در سطح پروتکل های TCP و UDP صحبت میکنیم که یک سطح بالاتره. درواقع بجای بسته بگیم دیتای ارسالی بهتره. چون دیتایی که شما توسط سوکت TCP یا UDP ارسال میکنید بسته به حجمش ممکنه به یک یا چند بستهء IP تبدیل بشه.
البته مفهوم و منظور کلی ای که بنده میخواستم برسونم درسته. و اون اینکه در پروتکل UDP شما باید خودتون از رسیدن دیتا به مقصد و ارسال مجددش درصورت لزوم اطمینان حاصل کنید، و در سمت گیرنده هم باید عملیات مرتب سازی داده های ارسالی و حذف داده های تکراری انجام بشه و بهرحال باید بین گیرنده و فرستند یک مکانیزم و ارتباط کنترلی هم وجود داشته باشه تا از طریق اون بتونن ارسال های ناموفق رو شناسایی کرده و نسبت به ارسال مجدد اقدام کنن.

دیتایی که با سوکت در هر بار ارسال میکنید اگر حجمش زیاد باشه ممکنه به چند بستهء IP تقسیم بشه و هرکدام از اون بسته ها اگر به مقصد نرسن اون دادهء شما در مقصد قابل بازیابی نیست و بنابراین مجبورید کل دیتا رو که شامل چند بستهء IP میشه مجددا ارسال کنید. بخاطر همین معمولا توصیه میشه که حجم هر ارسال کم باشه و حتی الامکان در یک بستهء IP جا بشه بدون اینکه اون بسته در بین راه دچار fragmentation (تبدیل یک بستهء IP به چند بستهء IP کوچکتر) بشه.
البته بنده فکر میکنم حجم هر ارسال تا چند بسته هم بد نباشه. چون حجم امن یک بستهء IP خیلی کمه (ظاهرا 576 بایت بیشتر نیست - تازه فکر کنم این حجم شامل header بسته هم میشه). چون اگر مثلا 3 تا بسته اضافه هم در هر بار به مقصد نرسیدن یک بسته مجددا ارسال بشن فکر نمیکنم مشکل جدی ای باشه، چون بهرحال در شرایط عادی تعداد بسته هایی که به مقصد نمیرسن زیاد نیست.

این اطلاعات و تحلیل بنده تاجاییکه تونستم.
شما هم یه نظری اطلاعاتی چیزی روو کنید مستفیض بشیم خب Huh
یه Thanks هم نزدن لامروتا Big Grin
  پاسخ
تشکر شده توسط : rezaweb
#9
این همه توضیح دادید اما اصل موضوع رو نگفتید.
دوست عزیز شما باید سوکت پروگرمینگ کار کنید.

اگر از پی اچ پی بخواهید استفاده کنید.
کد پی‌اچ‌پی:
http://php.net/manual/en/book.sockets.php 

اگر از جاوااسکریپت بخواهید
کد پی‌اچ‌پی:
http://socket.io/ 


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

حالا فرمت دیتا رد و بدل شده چه هست؟؟؟؟ هر جور که سرویس دهنده دوست داشته باشه.Big Grin
در واقعا این سرویس دهنده هست که کامند ها و فرمت دیتا ارسال شده یا دریافت شده رو تعیین میکنه. پس شما باید api لازم رو داشته باشید.
  پاسخ
تشکر شده توسط : rezaweb
#10
اقا افتاد!
ممنون از همه
با این حساب پدر من قراره در بیادSad
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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