ทดสอบฟังก์ชัน UDP ด้วย OT CLI

ดูแหล่งที่มาใน GitHub

OpenThread มีคำสั่ง UDP ที่ใช้กับเครือข่ายเทรดเพื่อทดสอบเพียร์ทูเพียร์ การสื่อสารระหว่างซ็อกเก็ต UDP cli udp ให้ตัวอย่างซ็อกเก็ต 1 รายการที่มี ซึ่งคำสั่งทั้ง udp จะทำงานโต้ตอบกัน

ตัวอย่างด้านล่างแสดงวิธีเปิดและเชื่อมโยงซ็อกเก็ต วิธีการ เชื่อมต่อซ็อกเก็ตและวิธีส่งข้อความโดยใช้ซ็อกเก็ต UDP

คำสั่ง UDP

สำหรับรายการคำสั่ง udp ให้พิมพ์ help:

udp help
bind
close
connect
linksecurity
open
send
Done

คำสั่ง open

ใช้คำสั่ง udp open เพื่อเปิดซ็อกเก็ตเพื่อเริ่มการสื่อสารด้วย UDP จากนั้นคุณจะมีตัวเลือกในการเชื่อมโยงซ็อกเก็ตกับที่อยู่ 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 เพื่อเปิดหรือปิดใช้การรักษาความปลอดภัยเลเยอร์ลิงก์ข้อมูลสําหรับข้อความได้

ส่งข้อความระหว่าง 2 โหนด

  1. เปิดซ็อกเก็ต UDP ในโหนด 1

    udp open
    Done
    
  2. เชื่อมโยงซ็อกเก็ตในโหนด 1

    udp bind :: 1234
    Done
    

    การใช้ :: หมายความว่า bind ควรใช้ที่อยู่ IPv6 ที่ไม่ระบุ จึงทำให้สแต็ก UDP/IPv6 กำหนดที่อยู่ IPv6 ที่เชื่อมโยงให้ สำหรับเวอร์ชันสมบูรณ์ ตัวเลือกกับ udp bind เช่น การเชื่อมโยงกับอินเทอร์เฟซเครือข่าย ดูการเชื่อมโยง udp

1 ในโหนด 2 ให้เปิดซ็อกเก็ต UDP

udp open
   Done
   

  1. ส่งข้อความง่ายๆ ไปยังโหนด 1 ในโหนด 2

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

    คำสั่งนี้ถือว่าโหนด 2 ค้นพบที่อยู่ของโหนด 1 แล้ว นอกจากนี้ ในตัวอย่างนี้ ผู้ดูแลระบบของโหนด 2 ได้เลือกที่จะไม่ เชื่อมซ็อกเก็ต เนื่องจากผู้ดูแลระบบโหนด 2 ต้องการส่ง ข้อความไปยังโหนด 1 โดยไม่สนว่าจะใช้ที่อยู่ IP และพอร์ตใด เป็นแหล่งที่มาของโหนด 2 ในกรณีนี้ ซ็อกเก็ตจะเลือกที่อยู่ IP และพอร์ตแบบสุ่ม

    สำหรับตัวเลือกทั้งหมดเกี่ยวกับ udp send โปรดดูที่ udp send

  2. โหนด 1 ยืนยันการได้รับข้อความจากโหนด 2:

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

เชื่อมต่อซ็อกเก็ตกับที่อยู่ซ็อกเก็ต จากนั้นส่งข้อความระหว่าง 2 โหนด

ตัวอย่างนี้คล้ายคลึงกับตัวอย่างก่อนหน้านี้ แต่แสดงให้เห็นถึงความยืดหยุ่นบางอย่าง ที่คุณมีเมื่อใช้ซ็อกเก็ต UDP โดยให้เชื่อมต่อซ็อกเก็ตกับ คุณไม่จำเป็นต้องระบุที่อยู่ IP และพอร์ตเพียร์ ทุกครั้งที่คุณทำ udp send

  1. เปิดซ็อกเก็ต UDP ในโหนด 1

    udp open
    Done
    
  2. เชื่อมโยงซ็อกเก็ตในโหนด 1

    udp bind :: 1234
    Done
    
  3. เปิดซ็อกเก็ต UDP ในโหนด 2

    udp open
    Done
    
  4. ในโหนด 2 ให้ใช้คำสั่ง udp connect เพื่อเปิดการสื่อสารไปยังโหนด 1

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

    สำหรับตัวเลือกทั้งหมดเกี่ยวกับ udp connect โปรดดูที่ udp Connect

  5. ในโหนด 2 ให้ใช้คำสั่ง udp send เพื่อส่งข้อความไปยังโหนด 1 แต่ไม่ส่ง ระบุ ip และ port ในไวยากรณ์คำสั่ง udp send

    udp send hello
    Done
    

    หากไม่ระบุ ip และ port คำสั่ง udp send จะใช้ ip และ port ซึ่งระบุไว้ในคำสั่ง udp connect