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
اقدامات اتصال ورودی را تعریف می کند.

Typedefs

otLinkedBuffer typedef
یک ساختار بافر پیوندی برای استفاده با TCP.
otTcpAcceptDone )(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer) typedef
void(*
این تماس برگشتی نشان می دهد که اتصال TCP اکنون برای ارتباط دو طرفه آماده است.
otTcpAcceptReady )(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto) typedef
این پاسخ تماس نشان می دهد که یک اتصال ورودی که با این شنونده TCP مطابقت دارد وارد شده است.
otTcpDisconnected )(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason) typedef
void(*
این تماس برگشتی نشان می دهد که اتصال قطع شده است و دیگر نباید استفاده شود، یا اینکه یک اتصال به حالت TIME-WAIT وارد شده است.
otTcpDisconnectedReason typedef
enum otTcpDisconnectedReason
otTcpEndpoint typedef
otTcpEndpointInitializeArgs typedef
حاوی آرگومان هایی برای تابع otTcpEndpointInitialize() است.
otTcpEstablished )(otTcpEndpoint *aEndpoint) typedef
void(*
این تماس برگشتی به برنامه اطلاع می دهد که دست دادن سه طرفه TCP کامل شده است و اکنون اتصال برقرار شده است.
otTcpForwardProgress )(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog) typedef
void(*
این پاسخ تماس به برنامه اطلاع می‌دهد که آیا در انتقال داده‌ها از بافر ارسال به گیرنده پیشرفتی صورت گرفته است.
otTcpIncomingConnectionAction typedef
اقدامات اتصال ورودی را تعریف می کند.
otTcpListener typedef
otTcpListenerInitializeArgs typedef
حاوی آرگومان هایی برای تابع otTcpListenerInitialize() است.
otTcpReceiveAvailable )(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining) typedef
void(*
این callback تعداد بایت های موجود برای مصرف از بافر دریافت را نشان می دهد.
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 و پورت مشخص شده مطابقت دارند، تماس های این شنونده TCP را فعال کنند.
otTcpListenerDeinitialize ( otTcpListener *aListener)
این شنونده TCP را از حالت اولیه خارج می کند.
otTcpListenerGetContext ( otTcpListener *aListener)
void *
نشانگر زمینه را که با aListener در زمان مقداردهی اولیه مرتبط بود، به دست می آورد.
otTcpListenerGetInstance ( otTcpListener *aListener)
otInstance را به دست می آورد که با aListener در زمان اولیه سازی مرتبط بود.
otTcpListenerInitialize ( otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs)
یک شنونده 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)
باعث می شود این شنونده TCP گوش دادن برای اتصالات ورودی را متوقف کند.

سازه ها

otLinkedBuffer

یک ساختار بافر پیوندی برای استفاده با TCP.

otTcpEndpoint

یک نقطه پایانی TCP را نشان می دهد.

otTcpEndpointInitializeArgs

حاوی آرگومان هایی برای تابع otTcpEndpointInitialize() است.

otTcpListener

یک شنونده TCP را نشان می دهد.

otTcpListenerInitializeArgs

حاوی آرگومان هایی برای تابع otTcpListenerInitialize() است.

شمارش ها

شماره ناشناس

 anonymous enum

پرچم های ارسال شده به ()otTcpConnect را تعریف می کند.

شماره ناشناس

 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

اتصال ورودی را رد کنید.

Typedefs

otLinkedBuffer

struct otLinkedBuffer otLinkedBuffer

یک ساختار بافر پیوندی برای استفاده با TCP.

یک ساختار واحد otLinkedBuffer به آرایه ای از بایت ها در حافظه از طریق mData و mLength ارجاع می دهد. فیلد mNext برای تشکیل زنجیره ای از ساختارهای otLinkedBuffer استفاده می شود.

otTcpAcceptDone

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

این تماس برگشتی نشان می دهد که اتصال TCP اکنون برای ارتباط دو طرفه آماده است.

در مورد TCP Fast Open، این ممکن است قبل از اینکه عملاً دست دادن اتصال TCP کامل شود، باشد. برنامه با نشانگرهای زمینه هم برای شنونده TCP که اتصال را پذیرفته و هم برای نقطه پایانی TCP که در آن پذیرفته شده است ارائه می شود. زمینه ارائه شده مربوط به شنونده TCP است.

جزئیات
مولفه های
[in] aListener
شنونده TCP که با اتصال ورودی مطابقت دارد.
[in] aEndpoint
نقطه پایانی TCP که اتصال ورودی به آن پذیرفته شد.
[in] aPeer
میزبان و پورتی که اتصال ورودی از آن منشا گرفته است.

otTcpAcceptReady

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

این پاسخ تماس نشان می دهد که یک اتصال ورودی که با این شنونده TCP مطابقت دارد وارد شده است.

پاسخ معمولی این است که برنامه اتصال ورودی را بپذیرد. این کار را با پر کردن aAcceptInto با اشاره‌گر به نقطه otTcpEndpoint انجام می‌دهد که در آن اتصال ورودی را می‌پذیرد. این otTcpEndpoint باید قبلاً با استفاده از ()otTcpEndpointInitialize مقداردهی اولیه شود. سپس، برنامه OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT را برمی‌گرداند.

از طرف دیگر، برنامه می‌تواند پذیرش اتصال ورودی را رد کند. دو راه برای این برنامه وجود دارد. ابتدا، اگر برنامه OT_TCP_INCOMING_CONNECTION_ACTION_DEFER را برگرداند، OpenThread بی‌صدا درخواست برقراری اتصال را نادیده می‌گیرد. همتای اتصال احتمالاً درخواست را مجدداً ارسال می کند، در این مرحله تماس مجدد دوباره فراخوانی می شود. اگر منابع در حال حاضر برای پذیرش اتصال در دسترس نباشند، ارزشمند است، اما ممکن است زمانی که همتای اتصال تلاش برای برقراری اتصال خود را مجددا ارسال می کند، در دسترس باشند. دوم، اگر برنامه OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE را برگرداند، OpenThread یک پیام "اتصال رد شد" را به میزبانی که سعی در برقراری اتصال دارد ارسال می کند. اگر برنامه اتصال ورودی را رد کند، نیازی به پر کردن aAcceptInto نیست.

جزئیات
مولفه های
[in] aListener
شنونده TCP که با اتصال ورودی مطابقت دارد.
[in] aPeer
میزبان و پورتی که اتصال ورودی از آن منشا می گیرد.
[out] aAcceptInto
نقطه پایانی TCP که اتصال ورودی را به آن می‌پذیرد.
برمی گرداند
شرح نحوه رسیدگی به اتصال ورودی.

otTcp قطع شد

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

این تماس برگشتی نشان می دهد که اتصال قطع شده است و دیگر نباید استفاده شود، یا اینکه یک اتصال به حالت TIME-WAIT وارد شده است.

اگر تلاش برای برقراری اتصال (که با فراخوانی otTcpConnect() آغاز می شود) با شکست مواجه شود یا هر نقطه پس از آن (مثلاً اگر زمان اتصال تمام شود یا یک قطعه RST از همتای اتصال دریافت شود) ممکن است رخ دهد. هنگامی که این فراخوانی فعال شد، تمام منابعی که برنامه برای این اتصال ارائه کرده است (به عنوان مثال، هر otLinkedBuffers و حافظه ای که به آنها ارجاع می دهند، اما نه خود نقطه پایانی TCP یا فضای بافرهای دریافتی) را می توان بازیابی کرد. در صورت ورود اتصال به حالت TIME-WAIT، این تماس دوبار، یک بار پس از ورود به حالت 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() است.

otTcp تاسیس شد

void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)

این تماس برگشتی به برنامه اطلاع می دهد که دست دادن سه طرفه TCP کامل شده است و اکنون اتصال برقرار شده است.

جزئیات
مولفه های
[in] aEndpoint
نقطه پایانی TCP که اکنون اتصال آن برقرار شده است.

otTcpForwardProgress

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

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

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

عملکرد این پاسخ تماس نزدیک به بافر ارسال TCP مرتبط است. بافر ارسال را می توان به عنوان داشتن دو منطقه درک کرد. اول، منطقه "در پرواز" در سر (جلو) بافر ارسال وجود دارد. این مربوط به داده هایی است که برای گیرنده ارسال شده است، اما هنوز تایید نشده است. دوم، منطقه "backlog" وجود دارد که شامل تمام داده های موجود در بافر ارسال است که در منطقه "in-flight" نیست. منطقه "backlog" مربوط به داده هایی است که برای ارسال در صف قرار می گیرند، اما هنوز ارسال نشده اند.

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

پشته TCP فقط از بایت های aInSendBuffer در انتهای بافر ارسال استفاده می کند. هنگامی که aInSendBuffer به مقدار x کاهش می یابد، به این معنی است که x بایت اضافی که قبلا در سر بافر ارسال بودند، دیگر بخشی از بافر ارسال نیستند و اکنون می توانند توسط برنامه بازیابی شوند (یعنی بازنویسی شوند). توجه داشته باشید که خود ساختار otLinkedBuffer فقط زمانی قابل بازیابی است که تمام بایت هایی که به آنها ارجاع می دهد دیگر بخشی از بافر ارسال نباشند.

این فراخوانی ()otTcpSendDone را به معنای زیر جمع‌بندی می‌کند: برنامه‌ها می‌توانند با مقایسه aInSendBuffer با تعداد بایت‌هایی که در هر بافر پیوندی وجود دارد، تعیین کنند که چه زمانی بافرهای مرتبط قابل بازیابی هستند. با این حال، ما انتظار داریم که otTcpSendDone() که مستقیماً نشان می دهد کدام otLinkedBuffer را می توان بازیابی کرد، بسیار ساده تر برای استفاده باشد. اگر هر دو فراخوان ثبت شده و توسط یک رویداد راه‌اندازی شوند (مثلاً همان بخش ACK دریافت شده)، سپس callback ()otTcpSendDone ابتدا و به دنبال آن این تماس مجدد راه‌اندازی می‌شود.

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

پس از تماس با otTcpSendByReference() یا otTcpSendByExtension() با تعداد بایت های مثبت، فراخوانی otTcpForwardProgress() تضمین می شود که نشان می دهد چه زمانی بایت هایی که به بافر ارسال اضافه شده اند ارسال می شوند. تماس با otTcpForwardProgress() ممکن است بلافاصله پس از اضافه شدن بایت ها به بافر ارسال (در صورتی که برخی از آن بایت ها فوراً ارسال شوند، که بک لاگ را کاهش می دهد) یا زمانی در آینده (زمانی که اتصال برخی یا همه را ارسال کرد) انجام شود. داده ها، کاهش عقب ماندگی). منظور ما از "بلافاصله" این است که فراخوان بلافاصله برای اجرا در یک tasklet برنامه ریزی شده است. برای جلوگیری از پیچیدگی مربوط به ورود مجدد، فراخوانی ()otTcpForwardProgress هرگز مستقیماً از توابع ()otTcpSendByReference یا otTcpSendByExtension() فراخوانی نمی شود.

جزئیات
مولفه های
[in] aEndpoint
نقطه پایانی TCP برای اتصال.
[in] aInSendBuffer
تعداد بایت‌های موجود در بافر ارسال (مجموع مناطق «در پرواز» و «بازگشت»).
[in] aBacklog
تعداد بایت هایی که برای ارسال در صف قرار می گیرند اما هنوز ارسال نشده اند (منطقه "بازگشت").

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)

این callback تعداد بایت های موجود برای مصرف از بافر دریافت را نشان می دهد.

هر زمان که بایت ها به بافر دریافت اضافه شوند و زمانی که به انتهای جریان می رسند، فراخوانی می شود. اگر به پایان جریان رسیده باشد (یعنی اگر داده دیگری برای خواندن در دسترس نباشد زیرا همتای اتصال انتهای اتصال خود را برای نوشتن بسته است)، آنگاه aEndOfStream درست است. در نهایت، aBytesRemaining نشان می‌دهد که چه مقدار ظرفیت در بافر دریافت برای نگهداری داده‌های اضافی که وارد می‌شود، باقی مانده است.

جزئیات
مولفه های
[in] aEndpoint
نقطه پایانی TCP برای اتصال.
[in] aBytesAvailable
تعداد بایت ها در بافر دریافت اتصال.
[in] aEndOfStream
نشان می دهد که آیا داده های اضافی، فراتر از آنچه در بافر دریافت اتصال وجود دارد، قابل دریافت است یا خیر.
[in] aBytesRemaining
تعداد بایت های اضافی که می توان قبل از پر شدن بافر دریافت دریافت کرد.

otTcpSendDone

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

این فراخوانی به برنامه اطلاع می‌دهد که داده‌های موجود در aData ارائه‌شده توسط همتای اتصال تأیید شده‌اند و aData و داده‌های موجود در آن می‌توانند توسط برنامه بازیابی شوند.

تضمین می شود که aData با آنهایی که از طریق otTcpSendByReference() به TCP منتقل می شود، یکسان هستند، از جمله هر پسوندی که از طریق 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 Fast Open باید با استفاده از 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 و پورت مشخص شده مطابقت دارند، تماس های این شنونده TCP را فعال کنند.

جزئیات
مولفه های
[in] aListener
یک اشاره گر به ساختار شنونده TCP که باید شروع به گوش دادن کند.
[in] aSockName
آدرس و پورتی که در آن می توان برای اتصالات ورودی گوش داد.
ارزش های بازگشتی
OT_ERROR_NONE
گوش دادن در شنونده TCP با موفقیت آغاز شد.
OT_ERROR_FAILED
شروع گوش دادن در شنونده TCP ناموفق بود.

otTcpListenerDeinitialize

otError otTcpListenerDeinitialize(
  otTcpListener *aListener
)

این شنونده TCP را از حالت اولیه خارج می کند.

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

اگر شنونده TCP در حال گوش دادن باشد، گوش دادن را متوقف می کند.

جزئیات
مولفه های
[in] aListener
یک اشاره گر به ساختار شنونده TCP برای باز کردن اولیه.
ارزش های بازگشتی
OT_ERROR_NONE
شنونده TCP با موفقیت نامشخص شد.
OT_ERROR_FAILED
شنونده TCP ناموفق بود.

otTcpListenerGetContext

void * otTcpListenerGetContext(
  otTcpListener *aListener
)

نشانگر زمینه را که با aListener در زمان مقداردهی اولیه مرتبط بود، به دست می آورد.

جزئیات
مولفه های
[in] aListener
شنونده TCP که زمینه به دست آوردن آن.
برمی گرداند
نشانگر زمینه مرتبط با aListener .

otTcpListenerGetInstance

otInstance * otTcpListenerGetInstance(
  otTcpListener *aListener
)

otInstance را به دست می آورد که با aListener در زمان اولیه سازی مرتبط بود.

جزئیات
مولفه های
[in] aListener
شنونده TCP که نمونه آن را به دست آورد.
برمی گرداند
نشانگر otInstance مرتبط با aListener .

otTcpListenerInitialize

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

یک شنونده TCP را راه اندازی می کند.

فراخوانی این تابع باعث می شود که OpenThread شنونده TCP را ردیابی کند و داده های TCP را در aListener ذخیره و بازیابی کند. برنامه باید از دسترسی مستقیم یا اصلاح فیلدها در aListener خودداری کند. اگر برنامه نیاز به بازیابی حافظه پشتیبان aListener داشته باشد، باید otTcpListenerDeinitialize() را فراخوانی کند.

جزئیات
مولفه های
[in] aInstance
اشاره گر به یک نمونه OpenThread.
[in] aListener
اشاره گر به ساختار شنونده TCP.
[in] aArgs
اشاره گر به ساختاری از آرگومان ها.
ارزش های بازگشتی
OT_ERROR_NONE
شنونده TCP با موفقیت باز شد.
OT_ERROR_FAILED
شنونده TCP باز نشد.

otTcpReceiveByReference

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

داده های ارجاع زنجیره بافر مرتبطی را که در حال حاضر در بافر دریافت TCP است به برنامه ارائه می دهد.

زنجیره بافر مرتبط تا زمانی که فراخوانی بعدی «receive ready» فراخوانی شود، یا تا زمانی که تماس بعدی با 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 است. آنها نباید توسط برنامه اصلاح شوند تا زمانی که یک فراخوان "ارسال انجام شد" مالکیت آن اشیاء را به برنامه بازگرداند. فراخوانی این تابع برای افزودن بافر پیوندی دیگری به صف ارسال قابل قبول است، حتی اگر پاسخ تماس «ارسال انجام شد» برای فراخوانی قبلی این تابع هنوز فعال نشده باشد.

توجه داشته باشید که 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
)

باعث می شود این شنونده TCP گوش دادن برای اتصالات ورودی را متوقف کند.

جزئیات
مولفه های
[in] aListener
یک اشاره گر به ساختار شنونده TCP که باید گوش دادن را متوقف کند.
ارزش های بازگشتی
OT_ERROR_NONE
با موفقیت گوش دادن در شنونده TCP متوقف شد.
OT_ERROR_FAILED
متوقف کردن گوش دادن در شنونده 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 به اندازه ساختار tcpcb در TCPlp باشد.

این امر ضروری است زیرا فیلد mTcb، اگرچه در اعلان خود مات است، اما در اجرای TCP به عنوان struct tcpcb در نظر گرفته می شود.

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 اندازه ساختار 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 یا بیشتر) عبور می کند، ممکن است توصیه شود که اندازه بافر بزرگ را به صورت دستی انتخاب کنید.

منابع

موضوعات مرجع OpenThread API از کد منبع موجود در GitHub سرچشمه می گیرند. برای اطلاعات بیشتر، یا مشارکت در اسناد ما، به منابع مراجعه کنید.

،

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
اقدامات اتصال ورودی را تعریف می کند.

Typedefs

otLinkedBuffer typedef
یک ساختار بافر پیوندی برای استفاده با TCP.
otTcpAcceptDone )(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer) typedef
void(*
این تماس برگشتی نشان می دهد که اتصال TCP اکنون برای ارتباط دو طرفه آماده است.
otTcpAcceptReady )(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto) typedef
این پاسخ تماس نشان می دهد که یک اتصال ورودی که با این شنونده TCP مطابقت دارد وارد شده است.
otTcpDisconnected )(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason) typedef
void(*
این تماس برگشتی نشان می دهد که اتصال قطع شده است و دیگر نباید استفاده شود، یا اینکه یک اتصال به حالت TIME-WAIT وارد شده است.
otTcpDisconnectedReason typedef
enum otTcpDisconnectedReason
otTcpEndpoint typedef
otTcpEndpointInitializeArgs typedef
حاوی آرگومان هایی برای تابع otTcpEndpointInitialize() است.
otTcpEstablished )(otTcpEndpoint *aEndpoint) typedef
void(*
این تماس برگشتی به برنامه اطلاع می دهد که دست دادن سه طرفه TCP کامل شده است و اکنون اتصال برقرار شده است.
otTcpForwardProgress )(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog) typedef
void(*
این پاسخ تماس به برنامه اطلاع می‌دهد که آیا در انتقال داده‌ها از بافر ارسال به گیرنده پیشرفتی صورت گرفته است.
otTcpIncomingConnectionAction typedef
اقدامات اتصال ورودی را تعریف می کند.
otTcpListener typedef
otTcpListenerInitializeArgs typedef
حاوی آرگومان هایی برای تابع otTcpListenerInitialize() است.
otTcpReceiveAvailable )(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining) typedef
void(*
این callback تعداد بایت های موجود برای مصرف از بافر دریافت را نشان می دهد.
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 و پورت مشخص شده مطابقت دارند، تماس های این شنونده TCP را فعال کنند.
otTcpListenerDeinitialize ( otTcpListener *aListener)
این شنونده TCP را از حالت اولیه خارج می کند.
otTcpListenerGetContext ( otTcpListener *aListener)
void *
نشانگر زمینه را که با aListener در زمان مقداردهی اولیه مرتبط بود، به دست می آورد.
otTcpListenerGetInstance ( otTcpListener *aListener)
otInstance را به دست می آورد که با aListener در زمان اولیه سازی مرتبط بود.
otTcpListenerInitialize ( otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs)
یک شنونده 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)
باعث می شود این شنونده TCP گوش دادن برای اتصالات ورودی را متوقف کند.

سازه ها

otLinkedBuffer

یک ساختار بافر پیوندی برای استفاده با TCP.

otTcpEndpoint

یک نقطه پایانی TCP را نشان می دهد.

otTcpEndpointInitializeArgs

حاوی آرگومان هایی برای تابع otTcpEndpointInitialize() است.

otTcpListener

یک شنونده TCP را نشان می دهد.

otTcpListenerInitializeArgs

حاوی آرگومان هایی برای تابع otTcpListenerInitialize() است.

شمارش ها

شماره ناشناس

 anonymous enum

پرچم های ارسال شده به ()otTcpConnect را تعریف می کند.

شماره ناشناس

 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

اتصال ورودی را رد کنید.

Typedefs

otLinkedBuffer

struct otLinkedBuffer otLinkedBuffer

یک ساختار بافر پیوندی برای استفاده با TCP.

یک ساختار واحد otLinkedBuffer به آرایه ای از بایت ها در حافظه از طریق mData و mLength ارجاع می دهد. فیلد mNext برای تشکیل زنجیره ای از ساختارهای otLinkedBuffer استفاده می شود.

otTcpAcceptDone

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

این تماس برگشتی نشان می دهد که اتصال TCP اکنون برای ارتباط دو طرفه آماده است.

در مورد TCP Fast Open، این ممکن است قبل از اینکه عملاً دست دادن اتصال TCP کامل شود، باشد. برنامه با نشانگرهای زمینه هم برای شنونده TCP که اتصال را پذیرفته و هم برای نقطه پایانی TCP که در آن پذیرفته شده است ارائه می شود. زمینه ارائه شده مربوط به شنونده TCP است.

جزئیات
مولفه های
[in] aListener
شنونده TCP که با اتصال ورودی مطابقت دارد.
[in] aEndpoint
نقطه پایانی TCP که اتصال ورودی به آن پذیرفته شد.
[in] aPeer
میزبان و پورتی که اتصال ورودی از آن منشا گرفته است.

otTcpAcceptReady

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

این پاسخ تماس نشان می دهد که یک اتصال ورودی که با این شنونده TCP مطابقت دارد وارد شده است.

پاسخ معمولی این است که برنامه اتصال ورودی را بپذیرد. این کار را با پر کردن aAcceptInto با اشاره‌گر به نقطه otTcpEndpoint انجام می‌دهد که در آن اتصال ورودی را می‌پذیرد. این otTcpEndpoint باید قبلاً با استفاده از ()otTcpEndpointInitialize مقداردهی اولیه شود. سپس، برنامه OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT را برمی‌گرداند.

از طرف دیگر، برنامه می‌تواند پذیرش اتصال ورودی را رد کند. دو راه برای این برنامه وجود دارد. ابتدا، اگر برنامه OT_TCP_INCOMING_CONNECTION_ACTION_DEFER را برگرداند، OpenThread بی‌صدا درخواست برقراری اتصال را نادیده می‌گیرد. همتای اتصال احتمالاً درخواست را مجدداً ارسال می کند، در این مرحله تماس مجدد دوباره فراخوانی می شود. اگر منابع در حال حاضر برای پذیرش اتصال در دسترس نباشند، ارزشمند است، اما ممکن است زمانی که همتای اتصال تلاش برای برقراری اتصال خود را مجددا ارسال می کند، در دسترس باشند. دوم، اگر برنامه OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE را برگرداند، OpenThread یک پیام "اتصال رد شد" را به میزبانی که سعی در برقراری اتصال دارد ارسال می کند. اگر برنامه اتصال ورودی را رد کند، نیازی به پر کردن aAcceptInto نیست.

جزئیات
مولفه های
[in] aListener
شنونده TCP که با اتصال ورودی مطابقت دارد.
[in] aPeer
میزبان و پورتی که اتصال ورودی از آن منشا می گیرد.
[out] aAcceptInto
نقطه پایانی TCP که اتصال ورودی را به آن می‌پذیرد.
برمی گرداند
شرح نحوه رسیدگی به اتصال ورودی.

otTcp قطع شد

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

این تماس برگشتی نشان می دهد که اتصال قطع شده است و دیگر نباید استفاده شود، یا اینکه یک اتصال به حالت TIME-WAIT وارد شده است.

اگر تلاش برای برقراری اتصال (که با فراخوانی otTcpConnect() آغاز می شود) با شکست مواجه شود یا هر نقطه پس از آن (مثلاً اگر زمان اتصال تمام شود یا یک قطعه RST از همتای اتصال دریافت شود) ممکن است رخ دهد. هنگامی که این فراخوانی فعال شد، تمام منابعی که برنامه برای این اتصال ارائه کرده است (به عنوان مثال، هر otLinkedBuffers و حافظه ای که به آنها ارجاع می دهند، اما نه خود نقطه پایانی TCP یا فضای بافرهای دریافتی) را می توان بازیابی کرد. در صورت ورود اتصال به حالت TIME-WAIT، این تماس دوبار، یک بار پس از ورود به حالت 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() است.

otTcp تاسیس شد

void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)

این تماس برگشتی به برنامه اطلاع می دهد که دست دادن سه طرفه TCP کامل شده است و اکنون اتصال برقرار شده است.

جزئیات
مولفه های
[in] aEndpoint
نقطه پایانی TCP که اکنون اتصال آن برقرار شده است.

otTcpForwardProgress

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

اگر پیشرفت پیش رو در انتقال داده ها از بافر ارسال به گیرنده انجام شود ، این پاسخ به تماس را اطلاع می دهد.

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

این عملیات پاسخ به تماس از نزدیک با بافر ارسال TCP گره خورده است. بافر ارسال را می توان به عنوان داشتن دو منطقه درک کرد. اول ، منطقه "در پرواز" در سر (جلو) بافر ارسال وجود دارد. این مطابق با داده هایی است که به گیرنده ارسال شده است ، اما هنوز تأیید نشده است. دوم ، منطقه "Backlog" وجود دارد ، که شامل تمام داده های موجود در بافر ارسال است که در منطقه "در پرواز" نیست. منطقه "Backlog" با داده هایی که برای ارسال در صف قرار گرفته است مطابقت دارد ، اما هنوز ارسال نشده است.

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

پشته TCP فقط از بایت های aInSendBuffer در دم بافر ارسال استفاده می کند. هنگامی که aInSendBuffer با مقدار X کاهش می یابد ، این بدان معنی است که X بایت های اضافی که قبلاً در راس بافر ارسال بودند ، دیگر بخشی از بافر ارسال نیستند و اکنون می توان با استفاده از برنامه بازپس گیری کرد (یعنی رونویسی). توجه داشته باشید که ساختار OtlinkedBuffer خود فقط می تواند پس از همه بایت هایی که منابع آن دیگر بخشی از بافر ارسال نیستند ، پس بگیرند.

این پاسخ به تماس ، OttCpsEndDone () را به معنای زیر می گذارد: برنامه ها می توانند با مقایسه aInSendBuffer با تعداد بایت در هر بافر مرتبط ، چه زمانی را می توان بافرهای پیوند یافته پس گرفت. با این حال ، ما انتظار داریم که Ottcpsenddone () ، که مستقیماً انتقال می دهد که می توان OtLinkedBuffers را پس گرفت ، استفاده از آن بسیار ساده تر باشد. اگر هر دو تماس تلفنی ثبت شده باشند و توسط همان رویداد ایجاد شوند (به عنوان مثال ، همان بخش ACK دریافت شده) ، پس از آن پاسخ به تماس با ottcpsenddone () انجام می شود و پس از آن این پاسخ به تماس.

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

پس از تماس با ottcpsendbyreference () یا ottcpsendbyextension () با تعداد مثبت بایت ، پاسخ به تماس با ottcpforwardprogress () تضمین می شود که مشخص شود که چه زمانی بایت هایی که به بافر ارسال شده اضافه شده اند ، ارسال می شوند. تماس با ottcpforwardprogress () ممکن است بلافاصله پس از اضافه شدن بایت به بافر ارسال (اگر بعضی از این بایت ها بلافاصله ارسال شوند ، کاهش پس زمینه) یا بعضی اوقات در آینده (پس از ارسال اتصال برخی یا همه داده ها ، کاهش پس زمینه). منظور ما از "بلافاصله" ، منظور ما این است که پاسخ به تماس بلافاصله برای اجرای در یک وظیفه برنامه ریزی شده است. برای جلوگیری از پیچیدگی مربوط به بازگرداندن ، پاسخ به تماس ottcpforwardprogress () هرگز از توابع ottcpsendbyreference () یا ottcpsendbyextension () فراخوانی نمی شود.

جزئیات
مولفه های
[in] aEndpoint
نقطه پایانی TCP برای اتصال.
[in] aInSendBuffer
تعداد بایت در بافر ارسال (جمع مناطق "پرواز" و "Backlog").
[in] aBacklog
تعداد بایت هایی که برای ارسال در صف قرار گرفته اند اما هنوز ارسال نشده اند (منطقه "عقب مانده").

ottcpincomingconnectionaction

enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction

اقدامات اتصال ورودی را تعریف می کند.

این در پاسخ به تماس ottcpacceptready () استفاده می شود.

سرپرست

struct otTcpListener otTcpListener

othcplistenerinitializeargs

struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs

حاوی استدلالهایی به عملکرد Ottcplistenerinitialize () است.

قابل استفاده

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

این پاسخ به تماس تعداد بایت های موجود برای مصرف از بافر دریافت را نشان می دهد.

هر زمان که بایت به بافر دریافت اضافه شود و به پایان رسید پایان جریان می شود ، خوانده می شود. اگر پایان جریان به دست آمده باشد (به عنوان مثال ، اگر اطلاعات بیشتری برای خواندن در دسترس نباشد زیرا همسالان اتصال انتهای اتصال خود را برای نوشتن بسته است) ، پس aEndOfStream درست است. سرانجام ، aBytesRemaining نشان می دهد که چقدر ظرفیت در بافر دریافت برای نگه داشتن داده های اضافی که وارد می شود باقی مانده است.

جزئیات
مولفه های
[in] aEndpoint
نقطه پایانی TCP برای اتصال.
[in] aBytesAvailable
تعداد بایت در بافر دریافت اتصال.
[in] aEndOfStream
نشان می دهد که آیا داده های اضافی ، فراتر از آنچه در حال حاضر در بافر دریافت اتصال وجود دارد ، می توانید دریافت کنید.
[in] aBytesRemaining
تعداد بایت های اضافی که می توانید قبل از پر شدن بافر دریافت دریافت کنید.

othcpsenddone

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

این پاسخ به برنامه به برنامه اطلاع می دهد که داده های موجود در aData ارائه شده توسط همسالان اتصال تأیید شده است و aData و داده های موجود در آن می توانند توسط برنامه پس گرفته شوند.

aData تضمین می شود که با مواردی که از طریق OttCpsEndByReference () به TCP منتقل می شوند ، از جمله هرگونه پسوندی که از طریق OTTCPSENDBYEXTENSION () انجام می شود ، یکسان است.

جزئیات
مولفه های
[in] aEndpoint
نقطه پایانی TCP برای اتصال.
[in] aData
یک اشاره گر به OtlinkedBuffer که می توان آن را پس گرفت.

کارکرد

othcpabort

otError otTcpAbort(
  otTcpEndpoint *aEndpoint
)

اتصال TCP مرتبط با این نقطه پایانی TCP را به زور پایان می دهد.

این بلافاصله باعث می شود تا نقطه پایانی TCP برای استفاده دیگر برای اتصال دیگری رایگان شود و بافر ارسال و دریافت را خالی کند و مالکیت هرگونه داده ارائه شده توسط برنامه در OttcpsEndByReference () و ottcpsendbyextension () را به برنامه بازگرداند. تماس و حافظه TCP Endpoint و حافظه برای بافر دریافت با نقطه پایانی TCP در ارتباط است.

جزئیات
مولفه های
[in] aEndpoint
یک اشاره گر به ساختار نقطه پایانی TCP که نمایانگر نقطه پایانی TCP برای سقط جنین است.
ارزش های بازگشتی
OT_ERROR_NONE
با موفقیت اتصال TCP Endpoint را سقط کرد.
OT_ERROR_FAILED
نتوانست اتصال نقطه پایانی TCP را سقط کند.

othcpbind

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
نتوانست عملیات دریافت را تکمیل کند.

othcpconct

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

میزبان و پورت از راه دور را برای این اتصال ثبت می کند.

TCP Fast Open باید با استفاده از aFlags فعال یا غیرفعال شود. در صورت غیرفعال شدن ، آنگاه دستکاری اتصال TCP بلافاصله آغاز می شود. در صورت فعال بودن ، این عملکرد صرفاً میزبان و درگاه از راه دور را ثبت می کند ، و دست ساز اتصال TCP فقط در اولین تماس به otTcpSendByReference() اتفاق می افتد.

اگر TCP Fast Open غیرفعال باشد ، تماس گیرنده باید منتظر پاسخ به تماس otTcpEstablished باشد که نشان می دهد دستکاری اتصال TCP قبل از شروع ارسال داده ها انجام می شود ، با فراخوانی otTcpSendByReference() .

جزئیات
مولفه های
[in] aEndpoint
یک اشاره گر به ساختار نقطه پایانی TCP برای اتصال.
[in] aSockName
آدرس IP و درگاه میزبان که برای اتصال به آن.
[in] aFlags
پرچم ها گزینه های این عملیات را مشخص می کنند (به شمارش بالا مراجعه کنید).
ارزش های بازگشتی
OT_ERROR_NONE
با موفقیت عملیات را انجام داد.
OT_ERROR_FAILED
نتوانست عملیات را انجام دهد.

ottcpendpointdeinitializeizializeizialize

otError otTcpEndpointDeinitialize(
  otTcpEndpoint *aEndpoint
)

این نقطه پایانی TCP را deinitialized می کند.

این بدان معنی است که 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
)

پس از اولیه سازی ، اوتینی که با aEndpoint همراه بود ، به دست می آورد.

جزئیات
مولفه های
[in] aEndpoint
نقطه پایانی TCP که نمونه آن برای به دست آوردن است.
برمی گرداند
نشانگر otinstance مرتبط با aEndpoint .

othcpendpointinitialize

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 Endpoint را بدست می آورد.

اگر این سوکت در حالت متصل نباشد ، محتوای میزبان و بندر ممکن است بی نظیر باشد.

جزئیات
مولفه های
[in] aEndpoint
نقطه پایانی TCP که میزبان و بندر همسالان برای به دست آوردن آن است.
برمی گرداند
میزبان و بندر همکار اتصال aEndpoint .

با صدای بلند

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

باعث اتصالات TCP ورودی می شود که با آدرس IP و پورت مشخص شده مطابقت دارند تا این تماس های شنونده TCP را تحریک کنند.

جزئیات
مولفه های
[in] aListener
اشاره گر به ساختار شنونده TCP که باید گوش دادن را آغاز کند.
[in] aSockName
آدرس و پورت ای که برای گوش دادن به اتصالات ورودی در آن گوش دهید.
ارزش های بازگشتی
OT_ERROR_NONE
با موفقیت گوش دادن به شنونده TCP را آغاز کرد.
OT_ERROR_FAILED
شروع به گوش دادن به شنونده TCP نشد.

بی نظیر کردن

otError otTcpListenerDeinitialize(
  otTcpListener *aListener
)

این شنونده TCP را تغییر دهید.

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

اگر شنونده TCP در حال گوش دادن است ، گوش دادن را متوقف می کند.

جزئیات
مولفه های
[in] aListener
یک اشاره گر به ساختار شنونده TCP برای تجزیه و تحلیل.
ارزش های بازگشتی
OT_ERROR_NONE
با موفقیت شنونده TCP را کاهش داد.
OT_ERROR_FAILED
نتوانست شنونده TCP را تغییر دهد.

ottcplistengergetcontext

void * otTcpListenerGetContext(
  otTcpListener *aListener
)

نشانگر زمینه ای را که پس از اولیه سازی با aListener همراه بود ، بدست می آورد.

جزئیات
مولفه های
[in] aListener
شنونده TCP که زمینه برای دستیابی به آن است.
برمی گرداند
نشانگر زمینه مرتبط با aListener .

ottcplistenergetinstance

otInstance * otTcpListenerGetInstance(
  otTcpListener *aListener
)

پس از اولیه سازی ، اوتینیایی را که با aListener همراه بود به دست می آورد.

جزئیات
مولفه های
[in] aListener
شنونده TCP که نمونه آن برای به دست آوردن است.
برمی گرداند
نشانگر otinstance مرتبط با aListener .

با استفاده از

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

یک شنونده TCP را آغاز می کند.

فراخوانی این عملکرد باعث می شود Openthread از شنونده TCP پیگیری کند و داده های TCP را در داخل aListener ذخیره و بازیابی کند. برنامه باید از دسترسی مستقیم یا اصلاح زمینه ها در aListener خودداری کند. اگر برنامه نیاز به بازپرداخت حافظه aListener دارد ، باید آن را با ottcplistenerdeinitialize () بنامد.

جزئیات
مولفه های
[in] aInstance
اشاره گر به یک نمونه OpenThread.
[in] aListener
یک اشاره گر به یک ساختار شنونده TCP.
[in] aArgs
یک اشاره گر به ساختار استدلال.
ارزش های بازگشتی
OT_ERROR_NONE
با موفقیت شنونده TCP را باز کرد.
OT_ERROR_FAILED
نتوانست شنونده TCP را باز کند.

OttcpreceiveByreference

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

برنامه را با داده های ارجاع زنجیره ای بافر مرتبط در حال حاضر در TCP دریافت بافر ارائه می دهد.

زنجیره بافر پیوند یافته تا زمانی که درخواست تماس بعدی "دریافت آماده" باشد ، معتبر است ، یا تا زمان تماس بعدی به ottcpreceivecontiguify () یا ottcpcommitreceive () .

جزئیات
مولفه های
[in] aEndpoint
یک اشاره گر به ساختار نقطه پایانی TCP که نشان دهنده نقطه پایانی TCP برای دریافت داده ها است.
[out] aBuffer
اشاره گر به داده های زنجیره ای بافر مرتبط که در حال حاضر در بافر دریافت شده است.
ارزش های بازگشتی
OT_ERROR_NONE
با موفقیت عملیات را انجام داد.
OT_ERROR_FAILED
نتوانست عملیات را انجام دهد.

othcpreceivecontiguify

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 است. آنها نباید توسط برنامه اصلاح شوند تا زمانی که "ارسال ارسال شده" مالکیت آن اشیاء را به برنامه بازگرداند. قابل قبول است که با این عملکرد تماس بگیرید تا یک بافر پیوند یافته دیگر به صف ارسال اضافه شود ، حتی اگر پاسخ تماس "ارسال شده" برای دعوت قبلی این عملکرد هنوز اخراج نشده است.

توجه داشته باشید که aBuffer نباید زنجیر شود. قسمت mnext آن باید تهی باشد. اگر داده های اضافی بلافاصله پس از این تماس اضافه شود ، باید از پرچم OT_TCP_SEND_MOR_TO_FOME به عنوان اشاره ای به اجرای 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
نتوانست شرایط "پایان جریان" برای انتقال را صف کند.

فهرست بندی

otError otTcpStopListening(
  otTcpListener *aListener
)

این شنونده TCP را متوقف می کند تا گوش دادن به اتصالات ورودی را متوقف کند.

جزئیات
مولفه های
[in] aListener
اشاره گر به ساختار شنونده TCP که باید گوش دادن را متوقف کند.
ارزش های بازگشتی
OT_ERROR_NONE
با موفقیت گوش دادن به شنونده TCP را متوقف کرد.
OT_ERROR_FAILED
نتوانست گوش دادن به شنونده 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 دارای اندازه ساختار TCPCB در TCPLP باشد.

این امر ضروری است زیرا میدان MTCB ، اگرچه در اعلامیه خود مات است ، اما در اجرای TCP به عنوان ساختار TCPCB رفتار می شود.

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 به اندازه ساختار tcpcb_listen در tcplp.

این امر ضروری است زیرا میدان mtcblisten ، گرچه در اعلامیه خود مات است ، اما در اجرای TCP به عنوان ساختار TCPCB رفتار می شود.

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 یا بیشتر) را طی کند ، ممکن است توصیه شود که یک اندازه بافر بزرگ را به صورت دستی انتخاب کنید.

منابع

موضوعات مرجع OpenThread API از کد منبع موجود در GitHub سرچشمه می گیرند. برای اطلاعات بیشتر، یا مشارکت در اسناد ما، به منابع مراجعه کنید.