ทดสอบฟังก์ชัน 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. บนโหนด 1 ให้เปิดซ็อกเก็ต UDP

    udp open
    Done
    
  2. ผูกซ็อกเก็ตในโหนด 1

    udp bind :: 1234
    Done
    

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

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

udp open
   Done
   

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

    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. บนโหนด 1 ให้เปิดซ็อกเก็ต UDP

    udp open
    Done
    
  2. ผูกซ็อกเก็ตในโหนด 1

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

    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