TCP

تتضمن هذه الوحدة وظائف تتحكم في اتصال TCP.

الملخّص

تعداد

anonymous enum تعداد
يحدد هذا التعدُّد العلامات التي يتم تمريرها إلى otTcpConnect().
anonymous enum تعداد
يحدد هذا التعداد العلامات التي تم تمريرها إلى otTcpSendByReference.
otTcpDisconnectedReason تعداد
otTcpIncomingConnectionAction{
  OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT,
  OT_TCP_INCOMING_CONNECTION_ACTION_DEFER,
  OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE
}
تعداد
تحدد هذه الرسوم البيانية إجراءات الاتصال الواردة.

رفوف النوع

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
struct otTcpEndpoint
otTcpEndpointInitializeArgs typedef
تتضمن هذه البنية وسيطات للدالة otTcpEndpointinitialize().
otTcpEstablished)(otTcpEndpoint *aEndpoint) typedef
void(*
وتُعلِم معاودة الاتصال هذه التطبيق باكتمال الاتصال تأكيدًا ثنائي الاتجاه لبروتوكول 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)
تحصل على المثيل الذي تم ربطه بـ aEndpoint عند الإعداد.
otTcpEndpointInitialize(otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs)
إعداد نقطة نهاية TCP.
otTcpGetLocalAddress(const otTcpEndpoint *aEndpoint)
const otSockAddr *
تحصل على مؤشر لنقطة نهاية TCP&& محلية على الجهاز.
otTcpGetPeerAddress(const otTcpEndpoint *aEndpoint)
const otSockAddr *
تحصل على مؤشر لنقطة نهاية TCP's خاصة بمضيف ومنفذ TCP.
otTcpListen(otTcpListener *aListener, const otSockAddr *aSockName)
يؤدي إلى وجود اتصالات TCP الواردة التي تطابق عنوان IP والمنفذ المحدد لتشغيل استدعاءات TCP هذه.
otTcpListenerDeinitialize(otTcpListener *aListener)
يؤدي هذا الإعداد إلى بدء تشغيل أداة معالجة بروتوكول TCP هذه.
otTcpListenerGetContext(otTcpListener *aListener)
void *
يحصل على مؤشر السياق المرتبط بـ aListener عند الإعداد.
otTcpListenerGetInstance(otTcpListener *aListener)
تحصل على المثيل الذي تم ربطه بـ 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 هذا عن الاستماع للاتصالات الواردة.

الهياكل

otLinkBuffer

بنية ذاكرة تخزين مؤقت مرتبطة للاستخدام مع بروتوكول TCP

otTcpEndpoint

هذه البنية تمثل نقطة نهاية TCP.

otTcpEndpointInitializeArgs

تتضمن هذه البنية وسيطات للدالة otTcpEndpointinitialize().

otTcpListener

هذه البنية تمثّل أداة معالجة TCP.

otTcpListenerinitializeArgs

تتضمن هذه البنية وسيطات للدالة otTcpListenerinitialize().

تعداد

تعداد مجهول

 anonymous enum

يحدد هذا التعدُّد العلامات التي يتم تمريرها إلى otTcpConnect().

تعداد مجهول

 anonymous enum

يحدد هذا التعداد العلامات التي تم تمريرها إلى otTcpSendByReference.

otTcpإلغاء الربط

 otTcpDisconnectedReason

otTcpInboundConnectionAction

 otTcpIncomingConnectionAction

تحدد هذه الرسوم البيانية إجراءات الاتصال الواردة.

ويتم استخدامه في استدعاء otTcpAcceptReady().

أماكن إقامة
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT

اقبل الاتصال الوارد.

OT_TCP_INCOMING_CONNECTION_ACTION_DEFER

تأجيل الاتصال الوارد (صامت)

OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE

رفض الاتصال الوارد

رفوف النوع

otLinkedBuffer

struct otLinkedBuffer otLinkedBuffer

بنية ذاكرة تخزين مؤقت مرتبطة للاستخدام مع بروتوكول TCP

تشير بنية otLinkBuffer واحدة إلى مصفوفة من وحدات البايت في الذاكرة من خلال mData وmLength. يُستخدم حقل mNext لإنشاء سلسلة من البنى otLinkBuffer.

otTcpAcceptDone

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

تشير هذه القيمة إلى أن اتصال TCP جاهز الآن للاتصال ثنائي الاتجاه.

بالنسبة إلى حالة بروتوكول TCP Open 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
سبب فقدان الاتصال.

otTcpإلغاء الربط

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&&39;s. يمكن اعتبار التخزين المؤقت للإرسال كمنطقتين. أولاً، تظهر المنطقة "&" في "رحلات الطيران" في الجزء العلوي (ال برنامج الأمامي) من المخزن المؤقت للإرسال. وهي تتوافق مع البيانات التي تم إرسالها إلى المستلِم، ولكن لم تتم الموافقة عليها بعد. ثانيًا، هناك المنطقة ""backlog" والتي تتألف من جميع البيانات في المخزن المؤقت للإرسال وهي ليست في منطقة "in-flight". تتوافق المنطقة &"backlog" مع البيانات التي يتم وضعها في قائمة الانتظار ليتم إرسالها ولكن لم يتم إرسالها بعد.

تم استدعاء رد الاتصال ردًا على نوعين من الأحداث. أولاً، قد تتقلّص منطقة التخزين المؤقت للإرسال والنسخ النصي (مثلاً، عندما يقر المستلِم بالبيانات التي أرسلناها في وقت سابق). ثانيًا، قد تتقلّص منطقة التخزين المؤقت "&&;;backlog" (قد يتم مثلاً إرسال بيانات جديدة). وغالبًا ما يحدث هذان الشرطان في الوقت نفسه، استجابةً لشريحة ACK من نظير الاتصال، ولهذا السبب يتم دمجها في استدعاء واحد.

لا تستخدم حزمة TCP سوى وحدات بايت aInSendBuffer في ذيل المخزن المؤقت للإرسال. عند انخفاض aInSendBuffer بمقدار x، فهذا يعني أن x وحدات البايت الإضافية التي كانت موجودة من قبل في المخزن المؤقت للإرسال لم تعد جزءًا من المخزن المؤقت للإرسال ويمكن الآن استردادها (أي تم استبدالها) من خلال التطبيق. لا يمكن استعادة البنية otLinkBuffer نفسها إلا بعد أن تصبح جميع وحدات البايت التي تشير إليها جزءًا من المخزن المؤقت للإرسال.

يفترض رد الاتصال هذا otTcpSendDone()، بالمعنى التالي: يمكن للتطبيقات تحديد وقت استرداد المخزن المؤقت المرتبط من خلال مقارنة aInSendBuffer بعدد وحدات البايت الموجودة في كل مخزن مؤقت مرتبط. ومع ذلك، نتوقع أن تكون الأداة otTcpSendDone()، التي تنقل مباشرةً إلى otLinkBuffers التي يمكن استردادها، أكثر سهولة في الاستخدام. إذا تم تسجيل معاودة الاتصال وتم تشغيلهما في الحدث نفسه (على سبيل المثال، تم تلقي شريحة ACK نفسها)، سيتم تشغيل استدعاء otTcpSendDone() أولاً، متبوعًا بمعاودة الاتصال هذه.

بالإضافة إلى ذلك، يوفر معاودة الاتصال هذه aBacklog، وهو ما يشير إلى عدد وحدات البايت للبيانات في المخزن المؤقت للإرسال لم يتم إرسالها بعد. بالنسبة إلى التطبيقات التي تريد إضافة بيانات إلى المخزن المؤقت للإرسال فقط عندما يكون هناك تأكيد بأنه سيتم إرسالها قريبًا، قد يكون من المستحسن إرسال البيانات عندما يكون aBacklog صغيرًا بشكل مناسب (0 أو قريبًا من 0). على سبيل المثال، قد يستخدم تطبيق aBacklog ليمكنه التفاعل مع تراكم قائمة الانتظار من خلال إفلات البيانات أو تجميعها لتجنب إنشاء تراكم البيانات.

بعد استدعاء otTcpSendByReference() أو otTcpSendByExtension() باستخدام عدد إيجابي من وحدات البايت، نضمن أن استدعاء otTcpForwardProgress() للإشارة إلى وقت إرسال وحدات البايت التي تمت إضافتها إلى المخزن المؤقت للإرسال. قد يتم استدعاء otTcpForwardProgress() مباشرة بعد إضافة وحدات البايت إلى المخزن المؤقت للإرسال (إذا تم إرسال بعض هذه وحدات البايت على الفور، مما يقلل من التراكمات)، أو ربما في وقت ما في المستقبل (بمجرد الاتصال يُرسل بعض البيانات أو جميعها، مما يقلل من معكوسًا). نقصد بـ "mediamediately," أنّه تمّت جدولة معاودة الاتصال على الفور في تنفيذ مهام

التفاصيل
المعلَمات
[in] aEndpoint
نقطة نهاية TCP للاتصال.
[in] aInSendBuffer
عدد وحدات البايت في المخزن المؤقت للإرسال (مجموع "in-flight" &"backlog"المناطق).
[in] aBacklog
عدد وحدات البايت التي تم وضعها في قائمة الانتظار للإرسال ولكن لم يتم إرسالها بعد (المنطقة "backlog"المنطقة).

otTcpInboundConnectionAction

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 يكون صحيحًا. وأخيرًا، يشير 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
مؤشر إلى otLinkBuffer الذي يمكن استرداده.

الدوال

otTcpAbort

otError otTcpAbort(
  otTcpEndpoint *aEndpoint
)

يؤدي هذا الإجراء إلى إنهاء اتصال TCP المرتبط بنقطة نهاية TCP هذه.

يؤدي ذلك فورًا إلى جعل نقطة نهاية TCP مجانية للاستخدام لاتصال آخر وإفراغ المخزن المؤقت للإرسال والاستلام، ونقل ملكية أي بيانات يوفرها التطبيق في otTcpSendByReference() وotTcpSendByExtension() مرة أخرى إلى التطبيق. تظل استدعاءات نقطة النهاية TCP's والذاكرة المخزن المؤقت للاستلام مرتبطة بنقطة نهاية TCP.

التفاصيل
المعلَمات
[in] aEndpoint
مؤشر إلى بنية نقطة نهاية TCP لتمثيل نقطة نهاية TCP لإلغاء العملية.
قيم الإرجاع
OT_ERROR_NONE
تم إلغاء اتصال نقطة نهاية TCP بنجاح.
OT_ERROR_FAILED
تعذّر إلغاء نقطة اتصال TCP.

ربط otTcp

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. وهذا يعني أن هذه الدالة لا تسجِّل سوى المضيف والمنفذ عن بُعد، وأن تأكيد الاتصال بمؤسسة TCP لا يحدث إلا في الطلب الأول من أجل otTcpSendByReference(). ويمكن إيقاف الفتح السريع لبروتوكول TCP صراحةً باستخدام aFlags، وفي هذه الحالة يتم بدء تأكيد الاتصال بمؤسسة TCP على الفور.

التفاصيل
المعلَمات
[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
)

تحصل على المثيل الذي تم ربطه بـ 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's خاصة بمضيف ومنفذ 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
)

تحصل على المثيل الذي تم ربطه بـ 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";next (التالي) أو حتى الاستدعاء التالي لـ 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 ذلك، ولا يجب تعديلها بواسطة التطبيق إلى أن تتم معاودة الاتصال بهذه الأجسام إلى التطبيق. من المقبول استدعاء هذه الدالة لإضافة ذاكرة تخزين مؤقت مرتبطة أخرى إلى قائمة انتظار الإرسال، حتى إذا لم يتم تنشيط استدعاء الإجراء &quot&send;" للاستدعاء السابق لهذه الدالة.

يجب ألا يكون aBuffer سلسلة، وأن يكون حقل mNext فارغًا. إذا تمت إضافة بيانات إضافية بعد هذه المكالمة مباشرةً، يجب استخدام علامة 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 هذه لن ترسل المزيد من البيانات.

يجب استخدام هذا الخيار عندما لا يتوفر في التطبيق مزيد من البيانات لإرسالها إلى نظير الاتصال. بالنسبة إلى هذا الاتصال، ستؤدي قراءات المستقبل على نظير الاتصال إلى حالة اقتصار &نقطة نظراً للدفق، وستتعذّر عمليات الكتابة المستقبلية على نقطة نهاية الاتصال هذه.

لا يسري الشرط "&quot؛ نهاية مصدر البث&، إلا بعد تلقّي بيانات الاتصال التي تم إرسالها سابقًا إلى حزمة 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_ENDPOINTS_TCB_NUM_PTR

 OT_TCP_ENDPOINT_TCB_NUM_PTR 36

OT_TCP_ENDPOINTS_TCB_SIZE_BASE

 OT_TCP_ENDPOINT_TCB_SIZE_BASE 368

تم اختيار OT_TCP_ENDPOINTS_TCB_SIZE_BASE وOT_TCP_ENDPOINTS_TCB_NUM_POINTSERS بحيث يكون حقل mTcb لـ otTcpEndpoint له نفس حجم بنية tcpcb في TCPlp.

ويُعدّ هذا إجراءً ضروريًا لأنه يتم التعامل مع حقل mTcb، على الرغم من أنه غير شفاف في تعريفه، على أنه بنية تكلفة النقرة المستهدفة في تنفيذ بروتوكول 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_POINTSERS بحيث يصبح حقل mTcbListener otTcpListener مطابقًا لحجم tcpcb_listen في TCPlp.

ويُعدّ هذا إجراءً ضروريًا لأنه يتم التعامل مع حقل mTcbListen على الرغم من أن التعتيم في إعلانه يتم التعامل معه كبنية tcpcb في تنفيذ بروتوكول TCP.

OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2599

حجم المخزن المؤقت الموصى به لاتصالات TCP التي تتجاوز 3 قفزات لاسلكية أو أقل.

على الأنظمة الأساسية التي تكون فيها الذاكرة محدودة بشكل خاص وفي الحالات التي لا يكون فيها معدل نقل البيانات مرتفعًا ضروريًا، قد يكون من الأفضل اختيار حجم ذاكرة تخزين مؤقت أصغر يدويًا.

OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4158

حجم المخزن المؤقت الموصى به لاتصالات TCP التي تتجاوز العديد من قفزات الشبكة اللاسلكية.

إذا اجتاز اتصال TCP عددًا كبيرًا جدًا من القفزات (أكثر من 6 أو أكثر)، قد يكون من المستحسن اختيار حجم كبير المخزن المؤقت يدويًا.

المراجع

تنشأ مواضيع واجهة برمجة تطبيقات OpenThread المرجعية من رمز المصدر المتاح على GitHub. للحصول على مزيد من المعلومات أو للمساهمة في الوثائق، يُرجى الرجوع إلى الموارد.