تست عملکرد UDP با OT CLI

مشاهده منبع در GitHub

OpenThread دستورات UDP را برای استفاده با شبکه Thread برای آزمایش ارتباط همتا به همتا بین سوکت های UDP ارائه می دهد. cli udp یک سوکت نمونه فراهم می کند که تمام دستورات udp با آن تعامل دارند.

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

دستورات UDP

برای لیستی از دستورات udp ، help را تایپ کنید:

udp help
bind
close
connect
linksecurity
open
send
Done

دستور open

برای شروع ارتباط UDP از دستور udp open برای باز کردن سوکت استفاده کنید. سپس این گزینه را دارید که سوکت را به یک آدرس IP و پورت خاص متصل کنید.

دستور bind

پس از open سوکت، می‌توانید یک دستور udp bind را برای اختصاص یک آدرس IPv6 و یک پورت به سوکت باز اجرا کنید. این سوکت را برای ارتباط متصل می کند. تخصیص آدرس و پورت IPv6 به نام سوکت نیز گفته می شود. اگر به طور مستقیم سوکت را bind نکنید، اتصال سوکت ( udp connect ) یا استفاده از آن در دستور udp send ، سوکت را به یک پورت زودگذر متصل می کند.

فرمان connect

برای اتصال سوکت نمونه به آدرس سوکت همتا می توان از دستور udp connect استفاده کرد. سپس می توانید دستور udp send را برای ارسال پیام به همتا صادر کنید. اگر سوکت قبلاً متصل نشده باشد، صدور فرمان udp connect سوکت را نیز متصل می کند.

send فرمان

یک دستور udp send با استفاده از سوکت مثال پیامی را به مقصدی که آدرس IP و پورت UDP آن را می توان با متغیرهای فرمان مشخص کرد ارسال می کند. اگر آدرس IP و پورت در دستور udp send مشخص نشده باشد، پیام با استفاده از سوکت مثال به مقصدی که در دستور udp connect مشخص شده ارسال می‌شود. صدور فرمان udp send سوکت را به یک پورت زودگذر متصل می‌کند، اگر سوکت قبلاً متصل نشده باشد.

دستور close

توصیه می شود زمانی که دیگر به سوکت نیازی ندارید از دستور udp close برای بستن سوکت استفاده کنید.

فرمان linksecurity

از دستور udp linksecurity می توان برای فعال یا غیرفعال کردن امنیت لایه پیوند داده برای پیام ها استفاده کرد.

ارسال پیام بین دو گره

  1. در Node 1، سوکت UDP را باز کنید.

    udp open
    Done
    
  2. در گره 1، سوکت را ببندید.

    udp bind :: 1234
    Done
    

    استفاده از :: نشان می دهد که bind باید از آدرس IPv6 نامشخص استفاده کند، بنابراین پشته UDP/IPv6 آدرس IPv6 اتصال را اختصاص می دهد. برای گزینه های کامل با udp bind ، مانند اتصال به یک رابط شبکه، به udp bind مراجعه کنید.

1 در Node 2، سوکت UDP را باز کنید.

udp open
   Done
   

  1. در Node 2، یک پیام ساده به Node 1 ارسال کنید.

    udp send fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234 hello
    Done
    

    این دستور فرض می‌کند که Node 2 قبلاً آدرس Node 1 را کشف کرده است. علاوه بر این، در این مثال، مدیر Node 2 انتخاب کرده است که سوکت را متصل نکند. این به این دلیل است که مدیر Node 2 می خواهد پیامی را به Node 1 ارسال کند بدون اینکه اهمیتی دهد که کدام یک از آدرس های IP و پورت های آن به عنوان منبع Node 2 استفاده می شود. سوکت در این سناریو یک آدرس IP و پورت را به صورت تصادفی انتخاب می کند.

    برای گزینه های کامل با udp send به udp send مراجعه کنید.

  2. Node 1 دریافت پیام از Node 2 را تایید می کند:

    5 bytes from fdde:ad00:beef:0:dac3:6792:e2e:90d8 49153 hello
    

سوکت را به آدرس سوکت همتا وصل کنید، سپس یک پیام بین دو گره ارسال کنید

این مثال مشابه نمونه قبلی است، اما برخی از انعطاف‌پذیری‌های شما را در استفاده از سوکت‌های UDP نشان می‌دهد. با این روش ابتدا سوکت را به آدرس سوکت همتا متصل می کنید، سپس نیازی به تعیین آدرس IP و پورت همتا در هر بار udp send ندارید.

  1. در Node 1، سوکت UDP را باز کنید.

    udp open
    Done
    
  2. در گره 1، سوکت را ببندید.

    udp bind :: 1234
    Done
    
  3. در Node 2، سوکت UDP را باز کنید.

    udp open
    Done
    
  4. در Node 2، از دستور udp connect برای باز کردن ارتباط با Node 1 استفاده کنید.

    udp connect fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234
    Done
    

    برای گزینه های کامل با udp connect ، به udp connect مراجعه کنید

  5. در Node 2، از دستور udp send برای ارسال پیام به Node 1 استفاده کنید، اما در دستور udp send ip و port مشخص نکنید.

    udp send hello
    Done
    

    با مشخص نکردن ip و port ، دستور udp send از ip و port استفاده می کند که در دستور udp connect مشخص شده است.