TCP

โมดูลนี้มีฟังก์ชันที่ควบคุมการสื่อสารผ่าน TCP

สรุป

การแจกแจง

anonymous enum enum
ระบุแฟล็กที่ส่งไปยัง otTcpConnect()
anonymous enum enum
ระบุแฟล็กที่ส่งไปยัง otTcpSendByReference
otTcpDisconnectedReason enum
otTcpIncomingConnectionAction{
  OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT,
  OT_TCP_INCOMING_CONNECTION_ACTION_DEFER,
  OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE
}
enum
กำหนดการทำงานของการเชื่อมต่อขาเข้า

Typedef

otLinkedBuffer typedef
โครงสร้างบัฟเฟอร์ที่ลิงก์ไว้สำหรับใช้กับ TCP
otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer) typedef
void(*
โค้ดเรียกกลับนี้บ่งบอกว่าการเชื่อมต่อ TCP พร้อมสำหรับการสื่อสารแบบ 2 ทางแล้ว
otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto) typedef
โค้ดเรียกกลับนี้บ่งบอกว่าการเชื่อมต่อขาเข้าที่ตรงกับ Listener TCP นี้มาถึงแล้ว
otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason) typedef
void(*
โค้ดเรียกกลับนี้ระบุว่าการเชื่อมต่อเสียหายและไม่ควรใช้งานอีกต่อไป หรือการเชื่อมต่ออยู่ในสถานะ TIME-WAIT
otTcpDisconnectedReason typedef
enum otTcpDisconnectedReason
otTcpEndpoint typedef
struct otTcpEndpoint
otTcpEndpointInitializeArgs typedef
มีอาร์กิวเมนต์ในฟังก์ชัน otTcpEndpointInitialize()
otTcpEstablished)(otTcpEndpoint *aEndpoint) typedef
void(*
โค้ดเรียกกลับนี้จะแจ้งแอปพลิเคชันว่าแฮนด์เชค 3 ทาง TCP เสร็จสมบูรณ์ และสร้างการเชื่อมต่อแล้ว
otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog) typedef
void(*
โค้ดเรียกกลับนี้จะแจ้งแอปพลิเคชันว่ามีความคืบหน้าในการส่งต่อในการโอนข้อมูลจากบัฟเฟอร์ที่ส่งไปยังผู้รับหรือไม่
otTcpIncomingConnectionAction typedef
กำหนดการทำงานของการเชื่อมต่อขาเข้า
otTcpListener typedef
struct otTcpListener
otTcpListenerInitializeArgs typedef
มีอาร์กิวเมนต์ในฟังก์ชัน otTcpListenerInitialize()
otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining) typedef
void(*
โค้ดเรียกกลับนี้จะระบุจำนวนไบต์ที่พร้อมใช้งานจากบัฟเฟอร์ของการรับ
otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData) typedef
void(*
โค้ดเรียกกลับนี้จะแจ้งให้แอปพลิเคชันทราบว่าข้อมูลใน aData ที่ระบุได้รับการยอมรับจากเพียร์การเชื่อมต่อ และแอปพลิเคชันสามารถอ้างสิทธิ์ aData และข้อมูลที่อยู่ในแอปอีกครั้งได้

ฟังก์ชัน

otTcpAbort(otTcpEndpoint *aEndpoint)
บังคับให้สิ้นสุดการเชื่อมต่อ TCP ที่เชื่อมโยงกับปลายทาง TCP นี้
otTcpBind(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName)
เชื่อมโยงปลายทาง TCP กับพอร์ตและที่อยู่ IP
otTcpCommitReceive(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
แจ้งสแต็ก TCP ว่าแอปพลิเคชันประมวลผลข้อมูลขนาด aNumBytes ไบต์ที่จุดเริ่มบัฟเฟอร์ของการรับแล้ว และสแต็ก TCP ไม่จำเป็นต้องเก็บไบต์เหล่านั้นในบัฟเฟอร์ของการรับ
otTcpConnect(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags)
บันทึกโฮสต์ระยะไกลและพอร์ตสำหรับการเชื่อมต่อนี้
otTcpEndpointDeinitialize(otTcpEndpoint *aEndpoint)
ยกเลิกการเริ่มต้นปลายทาง TCP นี้
otTcpEndpointGetContext(otTcpEndpoint *aEndpoint)
void *
รับตัวชี้บริบทที่เชื่อมโยงกับ aEndpoint เมื่อเริ่มต้น
otTcpEndpointGetInstance(otTcpEndpoint *aEndpoint)
รับ otInstance ที่เชื่อมโยงกับ aEndpoint เมื่อเริ่มต้น
otTcpEndpointInitialize(otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs)
เริ่มต้นปลายทาง TCP
otTcpGetLocalAddress(const otTcpEndpoint *aEndpoint)
const otSockAddr *
รับตัวชี้ไปยังโฮสต์และพอร์ตในเครื่องของปลายทาง TCP
otTcpGetPeerAddress(const otTcpEndpoint *aEndpoint)
const otSockAddr *
รับตัวชี้ไปยังโฮสต์และพอร์ตของเพียร์ปลายทาง TCP
otTcpListen(otTcpListener *aListener, const otSockAddr *aSockName)
ทำให้การเชื่อมต่อ TCP ขาเข้าที่ตรงกับที่อยู่ IP และพอร์ตที่ระบุทริกเกอร์การเรียกกลับของ Listener ของ TCP นี้
otTcpListenerDeinitialize(otTcpListener *aListener)
ยกเลิกการเริ่มต้น Listener ของ TCP นี้
otTcpListenerGetContext(otTcpListener *aListener)
void *
รับตัวชี้บริบทที่เชื่อมโยงกับ aListener เมื่อเริ่มต้น
otTcpListenerGetInstance(otTcpListener *aListener)
รับ otInstance ที่เชื่อมโยงกับ aListener เมื่อเริ่มต้น
otTcpListenerInitialize(otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs)
เริ่มต้น Listener ของ TCP
otTcpReceiveByReference(otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer)
จัดเตรียมแอปพลิเคชันด้วยห่วงโซ่บัฟเฟอร์ที่ลิงก์โดยอ้างอิงข้อมูลที่อยู่ในบัฟเฟอร์เพื่อรับ TCP
otTcpReceiveContiguify(otTcpEndpoint *aEndpoint)
จัดระเบียบบัฟเฟอร์ที่ได้รับใหม่ให้ต่อเนื่องกันในหน่วยความจำ
otTcpSendByExtension(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
เพิ่มข้อมูลลงในบัฟเฟอร์การส่งโดยขยายความยาวของ otLinkedBuffer สุดท้ายในบัฟเฟอร์ที่ส่งตามจำนวนที่ระบุ
otTcpSendByReference(otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags)
เพิ่มข้อมูลที่อ้างอิงโดยบัฟเฟอร์ที่ลิงก์ซึ่งชี้โดย aBuffer ไปยังบัฟเฟอร์ที่ส่ง
otTcpSendEndOfStream(otTcpEndpoint *aEndpoint)
แจ้งเพียร์การเชื่อมต่อว่าปลายทาง TCP นี้จะไม่ส่งข้อมูลเพิ่มเติม
otTcpStopListening(otTcpListener *aListener)
ทำให้ Listener TCP นี้หยุดฟังการเชื่อมต่อขาเข้า

โครงสร้าง

otLinkedBuffer

โครงสร้างบัฟเฟอร์ที่ลิงก์ไว้สำหรับใช้กับ TCP

otTcpEndpoint

แสดงปลายทาง TCP

otTcpEndpointInitializeArgs

มีอาร์กิวเมนต์ในฟังก์ชัน otTcpEndpointInitialize()

otTcpListener

แสดง Listener ของ TCP

otTcpListenerInitializeArgs

มีอาร์กิวเมนต์ในฟังก์ชัน otTcpListenerInitialize()

การแจกแจง

enum ที่ไม่ระบุตัวตน

 anonymous enum

ระบุแฟล็กที่ส่งไปยัง otTcpConnect()

enum ที่ไม่ระบุตัวตน

 anonymous enum

ระบุแฟล็กที่ส่งไปยัง otTcpSendByReference

otTcpDisconnectedReason

 otTcpDisconnectedReason

otTcpIncomingConnectionAction

 otTcpIncomingConnectionAction

กำหนดการทำงานของการเชื่อมต่อขาเข้า

ซึ่งจะใช้ในโค้ดเรียกกลับ otTcpAcceptReady()

พร็อพเพอร์ตี้
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT

ยอมรับการเชื่อมต่อขาเข้า

OT_TCP_INCOMING_CONNECTION_ACTION_DEFER

เลื่อนการเชื่อมต่อขาเข้า (ไม่ต้องสนใจ)

OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE

ปฏิเสธการเชื่อมต่อขาเข้า

Typedef

otLinkedBuffer

struct otLinkedBuffer otLinkedBuffer

โครงสร้างบัฟเฟอร์ที่ลิงก์ไว้สำหรับใช้กับ TCP

โครงสร้าง otLinkedBuffer เดียวอ้างอิงอาร์เรย์ของไบต์ในหน่วยความจำผ่าน mData และ mLength ช่อง mNext จะใช้ในการสร้างเชนโครงสร้าง otLinkedBuffer

otTcpAcceptDone

void(* otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)

โค้ดเรียกกลับนี้บ่งบอกว่าการเชื่อมต่อ TCP พร้อมสำหรับการสื่อสารแบบ 2 ทางแล้ว

ในกรณีของ TCP Fast Open นี่อาจจะเกิดขึ้นก่อนที่แฮนด์เชคการเชื่อมต่อ TCP จะเสร็จสมบูรณ์ แอปพลิเคชันมาพร้อมกับตัวชี้บริบททั้งสำหรับ Listener TCP ที่ยอมรับการเชื่อมต่อและปลายทาง TCP ที่ยอมรับ บริบทที่ให้ไว้คือบริบทที่เชื่อมโยงกับ Listener ของ TCP

รายละเอียด
พารามิเตอร์
[in] aListener
Listener TCP ที่ตรงกับการเชื่อมต่อขาเข้า
[in] aEndpoint
ปลายทาง TCP ที่การเชื่อมต่อขาเข้ายอมรับ
[in] aPeer
โฮสต์และพอร์ตที่เป็นต้นทางของการเชื่อมต่อขาเข้า

otTcpAcceptReady

otTcpIncomingConnectionAction(* otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)

โค้ดเรียกกลับนี้บ่งบอกว่าการเชื่อมต่อขาเข้าที่ตรงกับ Listener TCP นี้มาถึงแล้ว

การตอบสนองทั่วไปคือการให้แอปพลิเคชันยอมรับการเชื่อมต่อขาเข้า ซึ่งทำได้โดยการป้อนข้อมูล aAcceptInto ด้วยตัวชี้ที่ otTcpEndpoint เพื่อยอมรับการเชื่อมต่อขาเข้า otTcpEndpoint ต้องเริ่มต้นโดยใช้ otTcpEndpointInitialize() จากนั้นแอปพลิเคชันจะแสดงผล OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT

หรือแอปพลิเคชันสามารถปฏิเสธที่จะยอมรับการเชื่อมต่อขาเข้า แอปพลิเคชันจะดำเนินการได้ 2 วิธี ก่อนอื่น หากแอปพลิเคชันส่งคืน OT_TCP_INCOMING_CONNECTION_ACTION_DEFER จากนั้น OpenThread จะเพิกเฉยต่อคำขอสร้างการเชื่อมต่อโดยไม่มีการแจ้งเตือน การเพียร์การเชื่อมต่อมีแนวโน้มที่จะส่งคำขออีกครั้ง ซึ่งในเวลานั้นจะมีการเรียกใช้โค้ดเรียกกลับอีกครั้ง ซึ่งจะมีประโยชน์หากทรัพยากรไม่พร้อมให้ยอมรับการเชื่อมต่อในขณะนี้ แต่อาจใช้ได้เมื่อเพียร์ส่งการเชื่อมต่ออีกครั้ง อันดับที่สอง หากแอปพลิเคชันแสดงผล OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE แล้ว OpenThread จะส่งข้อความ "ถูกปฏิเสธการเชื่อมต่อ" ไปยังโฮสต์ที่พยายามจะสร้างการเชื่อมต่อ หากแอปพลิเคชันปฏิเสธการเชื่อมต่อขาเข้า ก็ไม่จำเป็นต้องป้อนข้อมูล aAcceptInto

รายละเอียด
พารามิเตอร์
[in] aListener
Listener TCP ที่ตรงกับการเชื่อมต่อขาเข้า
[in] aPeer
โฮสต์และพอร์ตที่เป็นต้นทางของการเชื่อมต่อขาเข้า
[out] aAcceptInto
ปลายทาง TCP ที่จะยอมรับการเชื่อมต่อขาเข้า
การส่งคืน
คำอธิบายวิธีจัดการการเชื่อมต่อขาเข้า

otTcpDisconnected

void(* otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)

โค้ดเรียกกลับนี้ระบุว่าการเชื่อมต่อเสียหายและไม่ควรใช้งานอีกต่อไป หรือการเชื่อมต่ออยู่ในสถานะ TIME-WAIT

ข้อผิดพลาดนี้อาจเกิดขึ้นเมื่อการสร้างการเชื่อมต่อ (เริ่มโดยการเรียกใช้ otTcpConnect()) ล้มเหลวหรือจุดใดก็ตามหลังจากนั้น (เช่น ในกรณีที่การเชื่อมต่อหมดเวลาหรือได้รับกลุ่ม RST จากเพียร์การเชื่อมต่อ) เมื่อโค้ดเรียกกลับเริ่มทำงาน ทรัพยากรทั้งหมดที่แอปพลิเคชันมีให้สำหรับการเชื่อมต่อนี้ (กล่าวคือ otLinkedBuffers และหน่วยความจำที่อ้างอิง แต่ไม่ใช่ปลายทาง TCP หรือพื้นที่สำหรับบัฟเฟอร์ที่ได้รับ) จะสามารถเรียกคืนได้ ในกรณีที่การเชื่อมต่อเข้าสู่สถานะ TIME-WAIT จะมีการเรียกกลับ 2 ครั้ง โดยครั้งแรกเมื่อเข้าสู่สถานะ TIME-WAIT (โดยมี OT_TCP_DISCONNECTED_REASON_TIME_WAIT และอีกครั้งเมื่อสถานะ TIME-WAIT หมดอายุ (โดยมี OT_TCP_DISCONNECTED_REASON_NORMAL)

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ปลายทาง TCP ที่สูญเสียการเชื่อมต่อ
[in] aReason
สาเหตุที่การเชื่อมต่อถูกตัด

otTcpDisconnectedReason

enum otTcpDisconnectedReason otTcpDisconnectedReason

otTcpEndpoint

struct otTcpEndpoint otTcpEndpoint

otTcpEndpointInitializeArgs

struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs

มีอาร์กิวเมนต์ในฟังก์ชัน otTcpEndpointInitialize()

otTcpEstablished

void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)

โค้ดเรียกกลับนี้จะแจ้งแอปพลิเคชันว่าแฮนด์เชค 3 ทาง TCP เสร็จสมบูรณ์ และสร้างการเชื่อมต่อแล้ว

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ปลายทาง TCP ที่สร้างการเชื่อมต่อแล้ว

otTcpForwardProgress

void(* otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)

โค้ดเรียกกลับนี้จะแจ้งแอปพลิเคชันว่ามีความคืบหน้าในการส่งต่อในการโอนข้อมูลจากบัฟเฟอร์ที่ส่งไปยังผู้รับหรือไม่

ไม่จำเป็นต้องเรียกกลับนี้สำหรับการทำงาน TCP ที่ถูกต้อง แอปพลิเคชันส่วนใหญ่จะใช้เพียงโค้ดเรียกกลับ otTcpSendDone() เพื่ออ้างสิทธิ์บัฟเฟอร์ที่ลิงก์อีกครั้งเมื่อสแต็ก TCP ใช้งานได้เสร็จแล้ว วัตถุประสงค์ของโค้ดเรียกกลับนี้คือการรองรับแอปพลิเคชันขั้นสูงที่ได้ประโยชน์จากข้อมูลโดยละเอียดเกี่ยวกับวิธีที่การเชื่อมต่อมีความคืบหน้าในการโอนข้อมูลไปยังเพียร์การเชื่อมต่อ

การดำเนินการของโค้ดเรียกกลับนี้เชื่อมโยงอย่างใกล้ชิดกับบัฟเฟอร์การส่งของ TCP ซึ่งบัฟเฟอร์ที่ส่งจะมี 2 ภูมิภาค อย่างแรกคือ ภูมิภาค "กำลังบิน" อยู่ตรงหัว (ด้านหน้า) ของบัฟเฟอร์การส่ง ซึ่งสอดคล้องกับข้อมูลที่ส่งไปยังผู้รับแล้ว แต่ยังไม่ได้รับทราบ ประการที่สองคือภูมิภาค " Backlog" ซึ่งประกอบด้วยข้อมูลทั้งหมดในบัฟเฟอร์การส่งที่ไม่ได้อยู่ในภูมิภาค "กำลังบิน" ภูมิภาค " Backlog" จะสอดคล้องกับข้อมูลที่รออยู่ในคิวสำหรับส่ง แต่ยังไม่ได้ส่ง

มีการเรียกกลับเพื่อตอบสนองต่อเหตุการณ์ 2 ประเภท อย่างแรก พื้นที่ "ขณะทำงาน" ของบัฟเฟอร์ที่ส่งอาจลดขนาดลง (เช่น เมื่อผู้รับรับทราบข้อมูลที่เราส่งไปก่อนหน้า) ประการที่ 2 พื้นที่ "ค้าง" ของบัฟเฟอร์ที่ส่งอาจหดตัวลง (เช่น มีการส่งข้อมูลใหม่) ทั้ง 2 เงื่อนไขนี้มักเกิดขึ้นพร้อมกันเพื่อตอบสนองกลุ่ม ACK จากเพียร์การเชื่อมต่อ ซึ่งเป็นสาเหตุที่ระบบรวมเงื่อนไขเหล่านี้ไว้ในโค้ดเรียกกลับเดียว

สแต็ก TCP จะใช้เพียง aInSendBuffer ไบต์ที่ด้านท้ายของบัฟเฟอร์ที่ส่ง เมื่อ aInSendBuffer ลดลงเป็นจำนวน x หมายความว่าไบต์เพิ่มเติม x ไบต์ที่เคยอยู่ที่ส่วนหัวของบัฟเฟอร์ที่ส่งจะไม่เป็นส่วนหนึ่งของบัฟเฟอร์การส่งอีกต่อไป และตอนนี้แอปสามารถอ้างสิทธิ์ใหม่ได้ (เช่น เขียนทับ) โปรดทราบว่าคุณสามารถอ้างสิทธิ์โครงสร้าง otLinkedBuffer คืนได้ก็ต่อเมื่อไบต์ทั้งหมดที่มีการอ้างอิงไม่ได้เป็นส่วนหนึ่งของบัฟเฟอร์การส่งอีกต่อไปแล้ว

โค้ดเรียกกลับนี้ใช้ย่อยของ otTcpSendDone() ในความหมายต่อไปนี้ แอปพลิเคชันสามารถระบุได้ว่าจะอ้างสิทธิ์บัฟเฟอร์ที่ลิงก์อีกครั้งเมื่อใดโดยเปรียบเทียบ aInSendBuffer กับจำนวนไบต์ที่อยู่ในบัฟเฟอร์ที่ลิงก์แต่ละรายการ อย่างไรก็ตาม เราคาดหวังให้ otTcpSendDone() ซึ่งสื่อสารโดยตรงว่า otLinkedBuffers ไหนนำมาใช้ใหม่ได้เพื่อให้ใช้งานง่ายขึ้นมาก หากมีการลงทะเบียนโค้ดเรียกกลับทั้ง 2 รายการและทริกเกอร์โดยเหตุการณ์เดียวกัน (เช่น ได้รับกลุ่ม ACK เดียวกัน) ระบบจะทริกเกอร์โค้ดเรียกกลับ otTcpSendDone() ก่อน ตามด้วยโค้ดเรียกกลับนี้

นอกจากนี้ โค้ดเรียกกลับนี้จะให้ข้อมูล aBacklog ซึ่งบอกจํานวนไบต์ในบัฟเฟอร์ที่ส่งที่ยังไม่ได้ดําเนินการ สำหรับแอปพลิเคชันที่ต้องการเพิ่มข้อมูลไปยังบัฟเฟอร์การส่งเมื่อมั่นใจว่าระบบจะส่งออกในเร็วๆ นี้เท่านั้น คุณควรส่งข้อมูลออกเฉพาะในกรณีที่ aBacklog มีขนาดเล็กที่เหมาะสม (0 หรือเกือบถึง 0) ตัวอย่างเช่น แอปพลิเคชันอาจใช้ aBacklog เพื่อให้สามารถตอบสนองต่อคิวการสร้างคิวโดยการทิ้งหรือรวมข้อมูลเพื่อหลีกเลี่ยงการสร้างรายการค้างของข้อมูล

หลังจากเรียก otTcpSendByReference() หรือ otTcpSendByExtension() เป็นจำนวนไบต์บวก ก็รับประกันได้เลยว่าจะมีการเรียกกลับ otTcpForwardProgress() เพื่อระบุเวลาที่เพิ่มไบต์ที่เพิ่มลงในบัฟเฟอร์การส่ง การเรียกใช้ otTcpForwardProgress() อาจทำขึ้นทันทีหลังจากมีการเพิ่มไบต์ลงในบัฟเฟอร์การส่ง (หากไบต์เหล่านั้นบางส่วนมีการส่งออกไปทันที ซึ่งเป็นการลดรายการงานที่ยังทำไม่เสร็จ) หรือในบางครั้งในอนาคต (เมื่อการเชื่อมต่อส่งข้อมูลบางส่วนหรือทั้งหมดออกไป จึงลด Backlog) "ในทันที" หมายความว่าจะมีการตั้งเวลาการเรียกกลับทันทีสำหรับการดำเนินการใน Tasklet เพื่อหลีกเลี่ยงความซับซ้อนที่เกี่ยวข้องกับการทำซ้ำ โค้ดเรียกกลับ otTcpForwardProgress() จะไม่ถูกเรียกจากฟังก์ชัน otTcpSendByReference() หรือ otTcpSendByExtension() โดยตรง

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ปลายทาง TCP สำหรับการเชื่อมต่อ
[in] aInSendBuffer
จำนวนไบต์ในบัฟเฟอร์ที่ส่ง (ผลรวมของภูมิภาค "อยู่ระหว่างดำเนินการ" และ " Backlog")
[in] aBacklog
จำนวนไบต์ที่อยู่ในคิวสำหรับส่งแต่ยังไม่ได้ส่ง (ภูมิภาค " Backlog")

otTcpIncomingConnectionAction

enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction

กำหนดการทำงานของการเชื่อมต่อขาเข้า

ซึ่งจะใช้ในโค้ดเรียกกลับ otTcpAcceptReady()

otTcpListener

struct otTcpListener otTcpListener

otTcpListenerInitializeArgs

struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs

มีอาร์กิวเมนต์ในฟังก์ชัน otTcpListenerInitialize()

otTcpReceiveAvailable

void(* otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)

โค้ดเรียกกลับนี้จะระบุจำนวนไบต์ที่พร้อมใช้งานจากบัฟเฟอร์ของการรับ

ระบบจะเรียกใช้เมื่อใดก็ตามที่มีการเพิ่มไบต์ลงในบัฟเฟอร์ของการรับและเมื่อถึงขีดจำกัดของสตรีม หากถึงจุดสิ้นสุดของสตรีมแล้ว (เช่น หากไม่มีข้อมูลให้อ่านอีกเนื่องจากการเพียร์ปิดการสิ้นสุดการเชื่อมต่อเพื่อเขียน) aEndOfStream จะเป็น True สุดท้าย aBytesRemaining จะแสดงความจุที่เหลืออยู่ในบัฟเฟอร์ที่รับข้อมูลเพื่อใช้เก็บข้อมูลเพิ่มเติมที่เข้ามา

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ปลายทาง TCP สำหรับการเชื่อมต่อ
[in] aBytesAvailable
จำนวนไบต์ในบัฟเฟอร์เพื่อรับของการเชื่อมต่อ
[in] aEndOfStream
ระบุว่าสามารถรับข้อมูลเพิ่มเติมนอกเหนือจากที่อยู่ในบัฟเฟอร์ของการเชื่อมต่อแล้วหรือไม่
[in] aBytesRemaining
จำนวนไบต์เพิ่มเติมที่รับได้ก่อนที่บัฟเฟอร์ของการรับจะเต็ม

otTcpSendDone

void(* otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)

โค้ดเรียกกลับนี้จะแจ้งให้แอปพลิเคชันทราบว่าข้อมูลใน aData ที่ระบุได้รับการยอมรับจากเพียร์การเชื่อมต่อ และแอปพลิเคชันสามารถอ้างสิทธิ์ aData และข้อมูลที่อยู่ในแอปอีกครั้งได้

เรารับประกันว่า aData จะเหมือนกับเวอร์ชันที่ส่งไปยัง TCP ผ่าน otTcpSendByReference() รวมถึงส่วนขยายที่ส่งผลผ่าน otTcpSendByExtension()

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ปลายทาง TCP สำหรับการเชื่อมต่อ
[in] aData
ตัวชี้ไปยัง otLinkedBuffer ที่สามารถเรียกคืนได้

ฟังก์ชัน

otTcpAbort

otError otTcpAbort(
  otTcpEndpoint *aEndpoint
)

บังคับให้สิ้นสุดการเชื่อมต่อ TCP ที่เชื่อมโยงกับปลายทาง TCP นี้

การดำเนินการนี้จะทำให้ปลายทาง TCP ใช้งานได้ฟรีสำหรับการเชื่อมต่ออื่นทันที และจะล้างการส่งและรับบัฟเฟอร์ ซึ่งเป็นการโอนความเป็นเจ้าของข้อมูลใดๆ ที่แอปพลิเคชันให้ไว้ใน otTcpSendByReference() และ otTcpSendByExtension() เรียกกลับไปยังแอปพลิเคชัน โค้ดเรียกกลับและหน่วยความจำของปลายทาง TCP สำหรับบัฟเฟอร์ที่ได้รับจะยังคงเชื่อมโยงกับปลายทาง TCP

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ตัวชี้ไปยังโครงสร้างปลายทาง TCP ที่แสดงถึงปลายทาง TCP ที่จะล้มเลิก
แสดงผลค่า
OT_ERROR_NONE
ล้มเลิกการเชื่อมต่อของปลายทาง TCP สำเร็จแล้ว
OT_ERROR_FAILED
ล้มเลิกการเชื่อมต่อของปลายทาง TCP ไม่สำเร็จ

otTcpBind

otError otTcpBind(
  otTcpEndpoint *aEndpoint,
  const otSockAddr *aSockName
)

เชื่อมโยงปลายทาง TCP กับพอร์ตและที่อยู่ IP

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ตัวชี้ไปยังโครงสร้างปลายทาง TCP เพื่อเชื่อมโยง
[in] aSockName
ที่อยู่และพอร์ตที่จะเชื่อมโยงปลายทาง TCP นี้
แสดงผลค่า
OT_ERROR_NONE
เชื่อมโยงปลายทาง TCP สำเร็จแล้ว
OT_ERROR_FAILED
เชื่อมโยงปลายทาง TCP ไม่สำเร็จ

otTcpCommitReceive

otError otTcpCommitReceive(
  otTcpEndpoint *aEndpoint,
  size_t aNumBytes,
  uint32_t aFlags
)

แจ้งสแต็ก TCP ว่าแอปพลิเคชันประมวลผลข้อมูลขนาด aNumBytes ไบต์ที่จุดเริ่มบัฟเฟอร์ของการรับแล้ว และสแต็ก TCP ไม่จำเป็นต้องเก็บไบต์เหล่านั้นในบัฟเฟอร์ของการรับ

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ตัวชี้ไปยังโครงสร้างปลายทาง TCP ที่แสดงถึงปลายทาง TCP ที่จะรับข้อมูล
[in] aNumBytes
จำนวนไบต์ที่ใช้ไป
[in] aFlags
แฟล็กที่ระบุตัวเลือกสำหรับการดำเนินการนี้ (ยังไม่มี)
แสดงผลค่า
OT_ERROR_NONE
การดำเนินการรับเสร็จสมบูรณ์แล้ว
OT_ERROR_FAILED
ดำเนินการรับให้เสร็จสิ้นไม่สำเร็จ

otTcpConnect

otError otTcpConnect(
  otTcpEndpoint *aEndpoint,
  const otSockAddr *aSockName,
  uint32_t aFlags
)

บันทึกโฮสต์ระยะไกลและพอร์ตสำหรับการเชื่อมต่อนี้

ต้องเปิดหรือปิดใช้ TCP แบบเร็วโดยใช้ aFlags หากปิดใช้ แฮนด์เชคการสร้างการเชื่อมต่อ TCP จะเริ่มต้นทันที หากเปิดใช้ ฟังก์ชันนี้จะบันทึกโฮสต์และพอร์ตระยะไกลเท่านั้น แฮนด์เชคของการสร้างการเชื่อมต่อ TCP จะเกิดขึ้นในการเรียก otTcpSendByReference() ครั้งแรกเท่านั้น

หากปิดใช้ TCP Fast Open อยู่ ผู้โทรจะต้องรอให้การโทรกลับของ otTcpEstablished ซึ่งระบุว่าแฮนด์เชคการเชื่อมต่อ TCP เสร็จสิ้นก่อน จึงจะสามารถเริ่มส่งข้อมูลได้ เช่น โดยการโทรหา otTcpSendByReference()

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ตัวชี้ไปยังโครงสร้างปลายทาง TCP เพื่อเชื่อมต่อ
[in] aSockName
ที่อยู่ IP และพอร์ตของโฮสต์ที่จะเชื่อมต่อ
[in] aFlags
แฟล็กที่ระบุตัวเลือกสำหรับการดำเนินการนี้ (ดูการแจกแจงด้านบน)
แสดงผลค่า
OT_ERROR_NONE
การดำเนินการเสร็จสมบูรณ์
OT_ERROR_FAILED
ดำเนินการไม่สำเร็จ

otTcpEndpointDeinitialize

otError otTcpEndpointDeinitialize(
  otTcpEndpoint *aEndpoint
)

ยกเลิกการเริ่มต้นปลายทาง TCP นี้

ซึ่งหมายความว่า OpenThread จะไม่ติดตามปลายทาง TCP นี้และจัดการกับทรัพยากรทั้งหมดที่จัดสรรไว้ภายในสำหรับปลายทาง TCP นี้ แอปพลิเคชันสามารถนำหน่วยความจำสำรองปลายทาง TCP มาใช้ซ้ำตามความเหมาะสม

หากสอดคล้องกับการเชื่อมต่อ TCP แบบสด การเชื่อมต่อจะยุติลงโดยไม่เจตนา (เช่น otTcpAbort()) ทรัพยากรทั้งหมดที่แอปพลิเคชันให้ไว้สำหรับปลายทาง TCP นี้ (บัฟเฟอร์ลิงก์ของบัฟเฟอร์ที่ส่ง หน่วยความจำสำหรับบัฟเฟอร์ที่ได้รับ หรือโครงสร้าง aEndpoint เอง) จะถูกส่งกลับไปยังแอปพลิเคชันทันที

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ตัวชี้ไปยังโครงสร้างปลายทาง TCP เพื่อยกเลิกการเริ่มต้น
แสดงผลค่า
OT_ERROR_NONE
ยกเลิกการเริ่มต้นปลายทาง TCP เรียบร้อยแล้ว
OT_ERROR_FAILED
ยกเลิกการเริ่มต้นปลายทาง TCP ไม่สำเร็จ

otTcpEndpointGetContext

void * otTcpEndpointGetContext(
  otTcpEndpoint *aEndpoint
)

รับตัวชี้บริบทที่เชื่อมโยงกับ aEndpoint เมื่อเริ่มต้น

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ปลายทาง TCP ที่มีบริบทที่จะรับ
การส่งคืน
ตัวชี้บริบทที่เชื่อมโยงกับ aEndpoint

otTcpEndpointGetInstance

otInstance * otTcpEndpointGetInstance(
  otTcpEndpoint *aEndpoint
)

รับ otInstance ที่เชื่อมโยงกับ aEndpoint เมื่อเริ่มต้น

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ปลายทาง TCP ที่มีอินสแตนซ์ที่จะรับ
การส่งคืน
ตัวชี้ otInstance ที่เชื่อมโยงกับ aEndpoint

otTcpEndpointInitialize

otError otTcpEndpointInitialize(
  otInstance *aInstance,
  otTcpEndpoint *aEndpoint,
  const otTcpEndpointInitializeArgs *aArgs
)

เริ่มต้นปลายทาง TCP

การเรียกฟังก์ชันนี้ทำให้ OpenThread จะติดตามปลายทาง TCP รวมถึงจัดเก็บและเรียกข้อมูล TCP ภายใน aEndpoint แอปพลิเคชันไม่ควรเข้าถึงหรือแก้ไขช่องใน aEndpoint โดยตรง หากแอปพลิเคชันต้องเรียกคืนหน่วยความจำสำรอง aEndpoint แอปพลิเคชันควรเรียกใช้ otTcpEndpointDeinitialize()

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
[in] aEndpoint
ตัวชี้ไปยังโครงสร้างปลายทาง TCP
[in] aArgs
ตัวชี้ไปยังโครงสร้างของอาร์กิวเมนต์
แสดงผลค่า
OT_ERROR_NONE
เปิดปลายทาง TCP สำเร็จแล้ว
OT_ERROR_FAILED
เปิดปลายทาง TCP ไม่สำเร็จ

otTcpGetLocalAddress

const otSockAddr * otTcpGetLocalAddress(
  const otTcpEndpoint *aEndpoint
)

รับตัวชี้ไปยังโฮสต์และพอร์ตในเครื่องของปลายทาง TCP

เนื้อหาของโฮสต์และพอร์ตอาจไม่อัปเดตหากซ็อกเก็ตนี้ไม่อยู่ในสถานะเชื่อมต่อและไม่มีการเชื่อมโยงหลังจากการเชื่อมต่อครั้งล่าสุด

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ปลายทาง TCP ที่มีโฮสต์ในเครื่องและพอร์ตที่จะรับ
การส่งคืน
โฮสต์ในเครื่องและพอร์ตของ aEndpoint

otTcpGetPeerAddress

const otSockAddr * otTcpGetPeerAddress(
  const otTcpEndpoint *aEndpoint
)

รับตัวชี้ไปยังโฮสต์และพอร์ตของเพียร์ปลายทาง TCP

เนื้อหาของโฮสต์และพอร์ตอาจไม่อัปเดตหากซ็อกเก็ตนี้ไม่อยู่ในสถานะเชื่อมต่อ

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ปลายทาง TCP ที่มีโฮสต์และพอร์ตของเพียร์ที่ต้องการรับ
การส่งคืน
โฮสต์และพอร์ตของเพียร์การเชื่อมต่อของ aEndpoint

otTcpListen

otError otTcpListen(
  otTcpListener *aListener,
  const otSockAddr *aSockName
)

ทำให้การเชื่อมต่อ TCP ขาเข้าที่ตรงกับที่อยู่ IP และพอร์ตที่ระบุทริกเกอร์การเรียกกลับของ Listener ของ TCP นี้

รายละเอียด
พารามิเตอร์
[in] aListener
ตัวชี้ไปยังโครงสร้าง Listener TCP ที่ควรเริ่มฟัง
[in] aSockName
ที่อยู่และพอร์ตที่จะรับการเชื่อมต่อขาเข้า
แสดงผลค่า
OT_ERROR_NONE
เริ่มการฟังบน Listener ของ TCP สำเร็จแล้ว
OT_ERROR_FAILED
เริ่มการฟังบน Listener TCP ไม่สำเร็จ

otTcpListenerDeinitialize

otError otTcpListenerDeinitialize(
  otTcpListener *aListener
)

ยกเลิกการเริ่มต้น Listener ของ TCP นี้

ซึ่งหมายความว่า OpenThread จะไม่ติดตาม Listener ของ TCP นี้อีกต่อไป และจัดสรรทรัพยากรทั้งหมดที่จัดสรรไว้เป็นการภายในสำหรับ Listener TCP นี้ แอปพลิเคชันสามารถใช้หน่วยความจำสำรอง Listener ของ TCP ซ้ำตามความเหมาะสม

หาก Listener ของ TCP กำลังฟังอยู่ ตัวฟังนั้นจะหยุดฟัง

รายละเอียด
พารามิเตอร์
[in] aListener
ตัวชี้ไปยังโครงสร้าง Listener ของ TCP เพื่อยกเลิกการเริ่มต้น
แสดงผลค่า
OT_ERROR_NONE
ยกเลิกการเริ่มต้น Listener ของ TCP สำเร็จแล้ว
OT_ERROR_FAILED
ยกเลิกการเริ่มต้น Listener TCP ไม่สำเร็จ

otTcpListenerGetContext

void * otTcpListenerGetContext(
  otTcpListener *aListener
)

รับตัวชี้บริบทที่เชื่อมโยงกับ aListener เมื่อเริ่มต้น

รายละเอียด
พารามิเตอร์
[in] aListener
Listener TCP ที่มีบริบทที่จะรับ
การส่งคืน
ตัวชี้บริบทที่เชื่อมโยงกับ aListener

otTcpListenerGetInstance

otInstance * otTcpListenerGetInstance(
  otTcpListener *aListener
)

รับ otInstance ที่เชื่อมโยงกับ aListener เมื่อเริ่มต้น

รายละเอียด
พารามิเตอร์
[in] aListener
Listener TCP ที่มีอินสแตนซ์ที่จะรับ
การส่งคืน
ตัวชี้ otInstance ที่เชื่อมโยงกับ aListener

otTcpListenerInitialize

otError otTcpListenerInitialize(
  otInstance *aInstance,
  otTcpListener *aListener,
  const otTcpListenerInitializeArgs *aArgs
)

เริ่มต้น Listener ของ TCP

การเรียกฟังก์ชันนี้ทำให้ OpenThread จะติดตาม Listener ของ TCP รวมถึงจัดเก็บและเรียกข้อมูล TCP ภายใน aListener แอปพลิเคชันไม่ควรเข้าถึงหรือแก้ไขช่องใน aListener โดยตรง หากแอปพลิเคชันต้องเรียกคืนหน่วยความจำสำรอง aListener แอปพลิเคชันควรเรียก otTcpListenerDeinitialize()

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
[in] aListener
ตัวชี้ไปยังโครงสร้าง Listener ของ TCP
[in] aArgs
ตัวชี้ไปยังโครงสร้างของอาร์กิวเมนต์
แสดงผลค่า
OT_ERROR_NONE
เปิด Listener ของ TCP สำเร็จแล้ว
OT_ERROR_FAILED
เปิด Listener TCP ไม่สำเร็จ

otTcpReceiveByReference

otError otTcpReceiveByReference(
  otTcpEndpoint *aEndpoint,
  const otLinkedBuffer **aBuffer
)

จัดเตรียมแอปพลิเคชันด้วยห่วงโซ่บัฟเฟอร์ที่ลิงก์โดยอ้างอิงข้อมูลที่อยู่ในบัฟเฟอร์เพื่อรับ TCP

ห่วงโซ่บัฟเฟอร์ที่ลิงก์จะใช้ได้จนกว่าจะมีการเรียกใช้การเรียกกลับ "รับพร้อม" ครั้งถัดไป หรือจนกว่าจะมีการเรียกไปยัง otTcpReceiveContiguify() หรือ otTcpCommitReceive() ครั้งถัดไป

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ตัวชี้ไปยังโครงสร้างปลายทาง TCP ที่แสดงถึงปลายทาง TCP ที่จะรับข้อมูล
[out] aBuffer
ตัวชี้ไปยังบัฟเฟอร์เชนซึ่งอ้างอิงข้อมูลที่อยู่ในบัฟเฟอร์ที่รับในปัจจุบัน
แสดงผลค่า
OT_ERROR_NONE
การดำเนินการเสร็จสมบูรณ์
OT_ERROR_FAILED
ดำเนินการไม่สำเร็จ

otTcpReceiveContiguify

otError otTcpReceiveContiguify(
  otTcpEndpoint *aEndpoint
)

จัดระเบียบบัฟเฟอร์ที่ได้รับใหม่ให้ต่อเนื่องกันในหน่วยความจำ

วิธีนี้เป็นขั้นตอนที่ไม่บังคับ แอปพลิเคชันสามารถข้ามผ่านห่วงโซ่บัฟเฟอร์ที่ลิงก์ไว้ซึ่งมาจากการเรียกใช้ otTcpReceiveByReference แอปพลิเคชันบางรายการอาจต้องการเรียกใช้ฟังก์ชันนี้เพื่อให้บัฟเฟอร์ที่ได้รับต่อเนื่องกันเพื่อลดความซับซ้อนในการประมวลผลข้อมูล แต่จะต้องลดเวลา CPU ในการจัดระเบียบข้อมูลในบัฟเฟอร์ที่ได้รับใหม่

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ตัวชี้ไปยังปลายทาง TCP ที่ได้รับบัฟเฟอร์เพื่อจัดระเบียบใหม่
แสดงผลค่า
OT_ERROR_NONE
การดำเนินการเสร็จสมบูรณ์
OT_ERROR_FAILED
ดำเนินการไม่สำเร็จ

otTcpSendByExtension

otError otTcpSendByExtension(
  otTcpEndpoint *aEndpoint,
  size_t aNumBytes,
  uint32_t aFlags
)

เพิ่มข้อมูลลงในบัฟเฟอร์การส่งโดยขยายความยาวของ otLinkedBuffer สุดท้ายในบัฟเฟอร์ที่ส่งตามจำนวนที่ระบุ

หากบัฟเฟอร์ที่ส่งว่างเปล่า แสดงว่าการดำเนินการล้มเหลว

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ตัวชี้ไปยังโครงสร้างปลายทาง TCP ที่แสดงปลายทาง TCP ที่จะส่งข้อมูล
[in] aNumBytes
จำนวนไบต์ที่จะขยายความยาวของบัฟเฟอร์ที่ลิงก์สุดท้าย
[in] aFlags
แฟล็กที่ระบุตัวเลือกสำหรับการดำเนินการนี้ (ดูการแจกแจงด้านบน)
แสดงผลค่า
OT_ERROR_NONE
เพิ่มข้อมูลลงในบัฟเฟอร์ที่ส่งเรียบร้อยแล้ว
OT_ERROR_FAILED
เพิ่มข้อมูลลงในบัฟเฟอร์ที่ส่งไม่สำเร็จ

otTcpSendByReference

otError otTcpSendByReference(
  otTcpEndpoint *aEndpoint,
  otLinkedBuffer *aBuffer,
  uint32_t aFlags
)

เพิ่มข้อมูลที่อ้างอิงโดยบัฟเฟอร์ที่ลิงก์ซึ่งชี้โดย aBuffer ไปยังบัฟเฟอร์ที่ส่ง

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

โปรดทราบว่าไม่ควรเชื่อมโยง aBuffer และช่อง mNext ควรเป็น NULL หากจะมีการเพิ่มข้อมูลเพิ่มเติมทันทีหลังจากการโทรนี้ ควรใช้แฟล็ก OT_TCP_SEND_MORE_TO_COME เป็นสัญญาณบอกใบ้การติดตั้งใช้งาน TCP

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ตัวชี้ไปยังโครงสร้างปลายทาง TCP ที่แสดงปลายทาง TCP ที่จะส่งข้อมูล
[in] aBuffer
ตัวชี้ไปยังบัฟเฟอร์เชนที่ลิงก์ซึ่งอ้างอิงข้อมูลที่จะเพิ่มลงในบัฟเฟอร์ที่ส่ง
[in] aFlags
แฟล็กที่ระบุตัวเลือกสำหรับการดำเนินการนี้ (ดูการแจกแจงด้านบน)
แสดงผลค่า
OT_ERROR_NONE
เพิ่มข้อมูลลงในบัฟเฟอร์ที่ส่งเรียบร้อยแล้ว
OT_ERROR_FAILED
เพิ่มข้อมูลลงในบัฟเฟอร์ที่ส่งไม่สำเร็จ

otTcpSendEndOfStream

otError otTcpSendEndOfStream(
  otTcpEndpoint *aEndpoint
)

แจ้งเพียร์การเชื่อมต่อว่าปลายทาง TCP นี้จะไม่ส่งข้อมูลเพิ่มเติม

ควรใช้เมื่อแอปพลิเคชันไม่มีข้อมูลเพิ่มเติมสำหรับส่งไปยังการเพียร์การเชื่อมต่อ สำหรับการเชื่อมต่อนี้ การอ่านค่าในระดับเดียวกันในอนาคตจะทําให้เกิดเงื่อนไข "สิ้นสุดสตรีม" และการเขียนในอนาคตในปลายทางการเชื่อมต่อนี้จะไม่สําเร็จ

เงื่อนไข "สิ้นสุดสตรีม" จะมีผลก็ต่อเมื่อเพียร์การเชื่อมต่อได้รับข้อมูลที่ให้ไว้กับสแต็ก TCP เพื่อส่งออกก่อนหน้านี้เท่านั้น

รายละเอียด
พารามิเตอร์
[in] aEndpoint
ตัวชี้ไปยังโครงสร้างปลายทาง TCP ที่แสดงถึงปลายทาง TCP ที่จะปิดเครื่อง
แสดงผลค่า
OT_ERROR_NONE
อยู่ในคิวเงื่อนไข "สิ้นสุดสตรีม" สำหรับการส่งเรียบร้อยแล้ว
OT_ERROR_FAILED
จัดคิวเงื่อนไข "สิ้นสุดสตรีม" สำหรับการส่งไม่สำเร็จ

otTcpStopListening

otError otTcpStopListening(
  otTcpListener *aListener
)

ทำให้ Listener TCP นี้หยุดฟังการเชื่อมต่อขาเข้า

รายละเอียด
พารามิเตอร์
[in] aListener
ตัวชี้ไปยังโครงสร้าง Listener TCP ที่ควรหยุดฟัง
แสดงผลค่า
OT_ERROR_NONE
หยุดการฟังใน Listener ของ TCP สำเร็จแล้ว
OT_ERROR_FAILED
หยุดการฟังใน Listener TCP ไม่สำเร็จ

มาโคร

OT_TCP_ENDPOINT_TCB_NUM_PTR

 OT_TCP_ENDPOINT_TCB_NUM_PTR 36

OT_TCP_ENDPOINT_TCB_SIZE_BASE

 OT_TCP_ENDPOINT_TCB_SIZE_BASE 392

มีการเลือก OT_TCP_ENDPOINT_TCB_SIZE_BASE และ OT_TCP_ENDPOINT_TCB_NUM_POINTERS ไว้เพื่อให้ช่อง mTcb ของ otTcpEndpoint มีขนาดเดียวกับ struct tcpcb ใน TCPlp

ซึ่งเป็นสิ่งจำเป็นเนื่องจากช่อง mTcb จะถือว่าฟิลด์ mTcb ไม่ชัดเจนในการประกาศ แต่ระบบถือว่า struct tcpcb ในการใช้งาน TCP

OT_TCP_LISTENER_TCB_NUM_PTR

 OT_TCP_LISTENER_TCB_NUM_PTR 3

OT_TCP_LISTENER_TCB_SIZE_BASE

 OT_TCP_LISTENER_TCB_SIZE_BASE 16

มีการเลือก OT_TCP_LISTENER_TCB_SIZE_BASE และ OT_TCP_LISTENER_TCB_NUM_POINTERS รายการเพื่อให้ช่อง mTcbListener ของ otTcpListener มีขนาดเท่ากับ struct tcpcb_listen ใน TCPlp

ซึ่งเป็นสิ่งจำเป็นเนื่องจากฟิลด์ mTcbListen แม้จะไม่ชัดเจนในการประกาศ จะถือเป็น struct tcpcb ในการใช้งาน TCP

OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2598

ขนาดบัฟเฟอร์ที่แนะนำสำหรับการเชื่อมต่อ TCP ที่ข้ามการเชื่อมต่อแบบไร้สายไม่เกิน 3 ครั้ง

ในแพลตฟอร์มที่หน่วยความจำจำกัดเป็นพิเศษและในกรณีที่ไม่จำเป็นต้องใช้แบนด์วิดท์สูง ขอแนะนำให้เลือกขนาดบัฟเฟอร์ที่เล็กลงด้วยตนเอง

OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4157

ขนาดบัฟเฟอร์ที่แนะนำสำหรับการเชื่อมต่อ TCP ที่ข้ามผ่านการรับส่งข้อมูลแบบไร้สายจำนวนมาก

หากการเชื่อมต่อ TCP ข้ามผ่านการรับส่งข้อมูลจำนวนมาก (มากกว่า 6 ครั้ง) ขอแนะนำให้เลือกขนาดบัฟเฟอร์ขนาดใหญ่ด้วยตนเอง

แหล่งข้อมูล

หัวข้ออ้างอิง API ของ OpenThread จะมาจากซอร์สโค้ดซึ่งพร้อมใช้งานใน GitHub ดูข้อมูลเพิ่มเติมหรือมีส่วนร่วมในเอกสารประกอบของเราได้ที่แหล่งข้อมูล