TCP
تحتوي هذه الوحدة على الدوال التي تتحكم في اتصال TCP.
ملخّص
التعدادات |
|
---|---|
anonymous enum
|
تعداد تحدِّد العلامات التي يتم تمريرها إلى otTcpConnect(). |
anonymous enum
|
تعداد تعريف العلامات التي تم تمريرها إلى otTcpSendByReference . |
otTcpDisconnectedReason
|
تعداد |
otTcpIncomingConnectionAction{
|
تعداد يتم تحديد إجراءات الاتصال الواردة. |
أنواع المحددات |
|
---|---|
otLinkedBuffer
|
typedefstruct otLinkedBuffer
بنية ذاكرة تخزين مؤقت مرتبطة لاستخدامها مع بروتوكول TCP |
otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)
|
typedefvoid(*
تشير عملية معاودة الاتصال هذه إلى أن اتصال TCP جاهز الآن للاتصال ثنائي الاتجاه. |
otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)
|
typedef تشير ردّ الاتصال هذا إلى وصول اتصال وارد يتطابق مع مستمع بروتوكول TCP هذا. |
otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)
|
typedefvoid(*
تشير رسالة معاودة الاتصال هذه إلى قطع الاتصال ويجب عدم استخدامه بعد الآن، أو أن الاتصال قد أدخل حالة TIME-WAIT. |
otTcpDisconnectedReason
|
typedefenum otTcpDisconnectedReason
|
otTcpEndpoint
|
typedefstruct otTcpEndpoint
|
otTcpEndpointInitializeArgs
|
typedefstruct otTcpEndpointInitializeArgs
يحتوي على وسيطات لدالة otTcpEndpointFirstNameize(). |
otTcpEstablished)(otTcpEndpoint *aEndpoint)
|
typedefvoid(*
تُبلغ هذه المكالمة التطبيق باكتمال عملية تأكيد الاتصال الثلاثي الاتجاه عبر بروتوكول TCP وأنّ الاتصال قد تم إنشاؤه. |
otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)
|
typedefvoid(*
تُعلِم رد الاتصال هذا التطبيق في حال تم التقدم في نقل البيانات من المخزن المؤقت للإرسال إلى المستلم. |
otTcpIncomingConnectionAction
|
typedef يتم تحديد إجراءات الاتصال الواردة. |
otTcpListener
|
typedefstruct otTcpListener
|
otTcpListenerInitializeArgs
|
typedefstruct otTcpListenerInitializeArgs
يحتوي على وسيطات لدالة otTcpالاستماع إلى الحرف الأول من الاسم. |
otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)
|
typedefvoid(*
تشير عملية معاودة الاتصال هذه إلى عدد وحدات البايت المتاحة للاستهلاك من المخزن المؤقت للاستلام. |
otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)
|
typedefvoid(*
تُعلِم عملية ردّ الاتصال هذه التطبيق بأنّه تمت الموافقة على البيانات في 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)
|
الحصول على مثيل Otin الذي كان مرتبطًا بـ
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)
|
الحصول على مثيل Otin الذي كان مرتبطًا بـ
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)
|
تُبلِغ هذه السياسة بأنّ نقطة الاتصال هذه لن ترسل مزيدًا من البيانات.
|
otTcpStopListening(otTcpListener *aListener)
|
تؤدي إلى إيقاف أداة معالجة بروتوكول التحكم في الإرسال هذه عن الاستماع إلى الاتصالات الواردة.
|
هياكل |
|
---|---|
otLinkedBuffer |
بنية ذاكرة تخزين مؤقت مرتبطة لاستخدامها مع بروتوكول TCP |
otTcpEndpoint |
يمثّل نقطة نهاية TCP. |
otTcpEndpointStartizeArgs |
يحتوي على وسيطات لدالة otTcpEndpointFirstNameize(). |
otTcpالاستماع |
يشير إلى مستمع TCP. |
otTcpالاستماع إلى الحرف الأول من الاسم |
يحتوي على وسيطات لدالة otTcpالاستماع إلى الحرف الأول من الاسم. |
التعدادات
تعداد مجهول
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
تشير بنية otLinkedBuffer واحدة إلى مجموعة من وحدات البايت في الذاكرة، من خلال mData وmLength. يُستخدم حقل mNext لإنشاء سلسلة من بُنى otLinkedBuffer.
otTcpقبول
void(* otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)
تشير عملية معاودة الاتصال هذه إلى أن اتصال TCP جاهز الآن للاتصال ثنائي الاتجاه.
في حال استخدام بروتوكول TCP Open Open، قد يكون ذلك قبل اكتمال تأكيد الاتصال عبر بروتوكول TCP. يتم تزويد التطبيق بمؤشرات السياق لكل من مستمع TCP الذي قَبِل الاتصال ونقطة نهاية TCP التي تم قبولها فيها. السياق المقدَّم هو السياق المرتبط بمستمع TCP.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
otTcpAcceptReady
otTcpIncomingConnectionAction(* otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)
تشير ردّ الاتصال هذا إلى وصول اتصال وارد يتطابق مع مستمع بروتوكول TCP هذا.
سيكون الرد المعتاد هو أن يقبل التطبيق الاتصال الوارد. ويتم ذلك من خلال تعبئة aAcceptInto
بمؤشر الماوس إلى otTcpEndpoint لقبول الاتصال الوارد. يجب إعداد otTcpEndpoint هذا باستخدام otTcpEndpointStartize(). بعد ذلك، يعرض التطبيق OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT.
يمكن للتطبيق بدلاً من ذلك رفض قبول الاتصال الوارد. هناك طريقتان للتطبيق لإجراء ذلك. أولاً، إذا عرض التطبيق OT_TCP_INCOMING_CONNECTION_ACTION_DEFER، يتجاهل OpenThread تلقائيًا طلب إنشاء الاتصال، ومن المحتمل أن يعيد زميل الاتصال إرسال الطلب، وعندها سيتم الاتصال بمعاودة الاتصال مرة أخرى. وهذا أمر مهم إذا لم تكن الموارد متاحة حاليًا لقبول الاتصال، ولكنها قد تكون متاحة عندما يعيد زميل الاتصال محاولة إنشاء الاتصال. ثانيًا، إذا كان التطبيق يعرض OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE، سيرسل عندئذٍ OpenThread رسالة "تم رفض الاتصال" إلى المضيف الذي حاول إنشاء اتصال. إذا رفض التطبيق الاتصال الوارد، لن يكون من الضروري تعبئة aAcceptInto
.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
المرتجعات |
وصف لكيفية التعامل مع الاتصال الوارد.
|
تم إلغاء ربط 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).
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
otTcp الاحتفاظ بالإلغاء
enum otTcpDisconnectedReason otTcpDisconnectedReason
otTcpEndpoint
struct otTcpEndpoint otTcpEndpoint
otTcpEndpointStartizeArgs
struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs
يحتوي على وسيطات لدالة otTcpEndpointFirstNameize().
تم تأسيس otTcp
void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)
تُبلغ هذه المكالمة التطبيق باكتمال عملية تأكيد الاتصال الثلاثي الاتجاه عبر بروتوكول TCP وأنّ الاتصال قد تم إنشاؤه.
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
otTcpForwardProgress
void(* otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)
تُعلِم رد الاتصال هذا التطبيق في حال تم التقدم في نقل البيانات من المخزن المؤقت للإرسال إلى المستلم.
رد الاتصال هذا ليس ضروريًا لعملية بروتوكول TCP الصحيحة. يمكن لمعظم التطبيقات الاعتماد على استدعاء otTcpSendDone() لاسترداد مخازن التخزين المؤقت المرتبطة بعد انتهاء حزمة TCP من استخدامها. الغرض من رد الاتصال هذا هو دعم التطبيقات المتقدمة التي تستفيد من المعلومات الأكثر دقة حول كيفية تقدم الاتصال للأمام في نقل البيانات إلى نظير الشبكة.
عملية معاودة الاتصال هذه ترتبط ارتباطًا وثيقًا بالمخزن المؤقت للإرسال عبر بروتوكول TCP. يمكن اعتبار المخزن المؤقت للإرسال يتضمّن منطقتين. أولاً، هناك المنطقة "الرحلة الجوية" في رأس الصفحة (الواجهة الأمامية) للمخزن المؤقت للإرسال. تتطابق هذه البيانات مع البيانات التي تم إرسالها إلى المستلِم، ولكن لم يتم الإقرار بها بعد. ثانيًا، تتوفر منطقة "عمليات التصنيف" التي تتألف من جميع البيانات في المخزن المؤقت للإرسال غير المُدرجة في منطقة "الرحلة الجوية". تتوافق منطقة "سجلّ العمل مع" مع البيانات في قائمة الانتظار للإرسال، ولكن لم يتم إرسالها بعد.
ويتم استدعاء رد الاتصال استجابةً لنوعَين من الأحداث. أولاً، قد تتقلص منطقة "الرحلة الجوية" للمخزن المؤقت للإرسال (مثلاً، عندما يقر المستلم بالبيانات التي أرسلناها سابقًا). ثانيًا، قد يتقلص نطاق "التخزين المؤقت" المخزن المؤقت للإرسال (مثلاً، تم إرسال بيانات جديدة). وغالبًا ما يحدث هذين الشرطين في الوقت نفسه، استجابةً لشريحة 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().
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
OTTcpInboundConnectionAction
enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction
يتم تحديد إجراءات الاتصال الواردة.
ويُستخدَم هذا الإجراء في استدعاء otTcpAcceptReady().
otTcpالاستماع
struct otTcpListener otTcpListener
otTcpالاستماع إلى الحرف الأول من الاسم
struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs
يحتوي على وسيطات لدالة otTcpالاستماع إلى الحرف الأول من الاسم.
otTcpReceivedمتوفّر
void(* otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)
تشير عملية معاودة الاتصال هذه إلى عدد وحدات البايت المتاحة للاستهلاك من المخزن المؤقت للاستلام.
ويتم طلبه عند إضافة وحدات البايت إلى المخزن المؤقت للاستلام وعند الوصول إلى نهاية البث. إذا تم الوصول إلى نهاية البث (أي إذا لم تعد هناك بيانات متاحة للقراءة لأن شبكة الاتصالات المشابهة قد أغلقت نهاية الاتصال للكتابة)، تكون القيمة aEndOfStream
صحيحة. وأخيرًا، يشير aBytesRemaining
إلى مقدار السعة المتبقية في المخزن المؤقت للاستلام للاحتفاظ بالبيانات الإضافية التي تصل.
التفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
المَعلمات |
|
otTcpSendDone
void(* otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)
تُعلِم عملية ردّ الاتصال هذه التطبيق بأنّه تمت الموافقة على البيانات في aData
المقدَّم من قِبل النظر في الاتصال ويمكن لـ aData
استرداد البيانات والبيانات التي يتضمّنها.
تضمن aData
أن تكون تلك المعلومات مطابقة لتلك التي تم نقلها إلى بروتوكول TCP من خلال otTcpSendByReference()، بما في ذلك أي إضافات تأثرت عبر otTcpSendByExtension().
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
الدوال
otTcpBort
otError otTcpAbort( otTcpEndpoint *aEndpoint )
يُثبِت بقوة اتصال TCP المرتبط بنقطة نهاية TCP هذه.
يؤدي هذا الإجراء إلى جعل نقطة نهاية بروتوكول التحكم في الإرسال (TCP) مجانية للاستخدام مع اتصال آخر وأفرغ المخزن المؤقت للإرسال والاستقبال ونقل ملكية أي بيانات يوفّرها التطبيق في otTcpSendByReference() واستدعاء otTcpSendByExtension() مرة أخرى إلى التطبيق. تظل استدعاءات نقطة نهاية TCP وذاكرة المخزن المؤقت للاستلام مرتبطة بنقطة نهاية TCP.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
||||
قيم الإرجاع |
|
otTcp تنطبق
otError otTcpBind( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName )
تربط نقطة نهاية TCP بعنوان IP ومنفذ.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
||||
قيم الإرجاع |
|
otTcpCommitتلقّي
otError otTcpCommitReceive( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
لإبلاغ حزمة TCP بأنّ التطبيق قد انتهى من معالجة aNumBytes
بايت من البيانات في بداية المخزن المؤقت للاستلام وأنّ حزمة TCP لا تحتاج إلى مواصلة صيانة وحدات البايت هذه في المخزن المؤقت للاستلام.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
otTcpConnect
otError otTcpConnect( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags )
يتم تسجيل المضيف والمنفذ عن بُعد لهذا الاتصال.
يجب أن ينتظر المُتصِل حتى يتم الرد على مكالمة otTcpEstablished
للإشارة إلى أن تأكيد الاتصال عبر بروتوكول TCP قد تم قبل بدء إرسال البيانات، مثل الاتصال بالرقم otTcpSendByReference()
.
ميزة "الفتح السريع عبر بروتوكول TCP" غير متاحة حتى الآن وتجاهل aFlags
.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
otTcpEndpointDeFirstNameize
otError otTcpEndpointDeinitialize( otTcpEndpoint *aEndpoint )
يؤدي إلى إعداد نقطة نهاية TCP هذه.
وهذا يعني أن OpenThread لم يعد يتتبّع نقطة نهاية TCP هذه ويعرض جميع الموارد التي خصّصتها داخليًا لنقطة نهاية TCP هذه. يمكن للتطبيق إعادة استخدام الذاكرة التي تدعم نقطة نهاية TCP على النحو المناسب.
في حال تطابق الاتصال مع بروتوكول TCP المباشر، يتم إنهاء الاتصال بشكل غير مقصود (كما في otTcpABort()). تتم إعادة جميع الموارد التي قدّمها التطبيق لنقطة نهاية بروتوكول TCP هذه (المخازن المؤقتة المرتبطة وذاكرة التخزين المؤقت للإرسال وذاكرة المخزن المؤقت للاستلام وبنية aEndpoint
نفسها) إلى التطبيق على الفور.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
||||
قيم الإرجاع |
|
otTcpEndpointGetContext
void * otTcpEndpointGetContext( otTcpEndpoint *aEndpoint )
الحصول على مؤشر السياق الذي كان مرتبطًا بـ aEndpoint
عند الإعداد.
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
||
المرتجعات |
مؤشر السياق المرتبط بـ
aEndpoint . |
otTcpEndpointGetInstance
otInstance * otTcpEndpointGetInstance( otTcpEndpoint *aEndpoint )
الحصول على مثيل Otin الذي كان مرتبطًا بـ aEndpoint
عند الإعداد.
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
||
المرتجعات |
مؤشر مثيل otIn المرتبط بـ
aEndpoint . |
otTcpEndpointStartize
otError otTcpEndpointInitialize( otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs )
لإعداد نقطة نهاية TCP.
يؤدي استدعاء هذه الدالة إلى أن يؤدي موقع OpenThread إلى تتبع نقطة نهاية TCP وتخزين بيانات بروتوكول TCP واستردادها داخل aEndpoint
. يجب أن يرفض التطبيق الوصول إلى الحقول أو تعديلها مباشرةً في aEndpoint
. إذا كان التطبيق بحاجة إلى استعادة الذاكرة التي تم الاحتفاظ بنسخة احتياطية منها aEndpoint
، يجب طلب otTcpEndpointDeFirstNameize().
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
otTcpGetLocalAddress
const otSockAddr * otTcpGetLocalAddress( const otTcpEndpoint *aEndpoint )
الحصول على مؤشر إلى المضيف والمنفذ المحلي لنقطة نهاية بروتوكول التحكم في الإرسال (TCP)
قد يكون محتوى المضيف والمنفذ قديمًا إذا لم يكن هذا المقبس في الحالة المتصلة ولم يتم فرض قيود عليه بعد قطع الاتصال آخر مرة.
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
||
المرتجعات |
المضيف المحلي والمنفذ
aEndpoint |
otTcpGetPeerAddress
const otSockAddr * otTcpGetPeerAddress( const otTcpEndpoint *aEndpoint )
الحصول على مؤشر لمضيف مضيف منفذ TCP ومنفذه
قد يكون محتوى المضيف والمنفذ قديمًا إذا لم يكن هذا المقابس في حالة متصلة.
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
||
المرتجعات |
مضيف ومنفذ نظير الاتصال بـ
aEndpoint . |
otTcpالاستماع
otError otTcpListen( otTcpListener *aListener, const otSockAddr *aSockName )
تؤدي هذه السياسة إلى اتصالات TCP الواردة التي تطابق عنوان IP والمنفذ المحدَّدين لتشغيل استدعاءات مستمع TCP هذه.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
||||
قيم الإرجاع |
|
otTcpالاستماع إلىDeDeizeize
otError otTcpListenerDeinitialize( otTcpListener *aListener )
يُعرّف هذا الإعداد الجديد لمستمع TCP.
وهذا يعني أن OpenThread لم يعد يتتبّع مستمع TCP هذا ويعرض جميع الموارد التي خصّصها داخليًا لمستمع TCP هذا. يمكن للتطبيق إعادة استخدام الذاكرة التي تعمل بمستمع TCP على النحو المناسب.
إذا كان مستمع TCP يستمع حاليًا، يتوقف عن الاستماع.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
||||
قيم الإرجاع |
|
otTcpالاستماع إلى الحصول على السياق
void * otTcpListenerGetContext( otTcpListener *aListener )
الحصول على مؤشر السياق الذي كان مرتبطًا بـ aListener
عند الإعداد.
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
||
المرتجعات |
مؤشر السياق المرتبط بـ
aListener . |
otTcpListenerGetInstance
otInstance * otTcpListenerGetInstance( otTcpListener *aListener )
الحصول على مثيل Otin الذي كان مرتبطًا بـ aListener
عند الإعداد.
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
||
المرتجعات |
مؤشر مثيل otIn المرتبط بـ
aListener . |
otTcpالاستماع إلى الحرف الأول
otError otTcpListenerInitialize( otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs )
إعداد مستمع TCP
يؤدي استدعاء هذه الدالة إلى أن يفتح OpenThread تتبّع مستمع TCP ومتجره ويسترد بيانات TCP داخل aListener
. يجب أن يرفض التطبيق الوصول إلى الحقول أو تعديلها مباشرةً في aListener
. إذا كان التطبيق بحاجة إلى استعادة الذاكرة التي تم الاحتفاظ بنسخة احتياطية من aListener
، يجب طلب otTcpالاستماع إلى واجهة برمجة التطبيقات Devize()
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
otTcpReceivedByReference
otError otTcpReceiveByReference( otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer )
يزوّد التطبيق بسلسلة ذاكرة تخزين مؤقت مرتبطة تشير إلى البيانات الموجودة حاليًا في المخزن المؤقت للاستلام TCP
سلسلة المخزن المؤقت المرتبطة صالحة إلى أن يتم استدعاء استدعاء "الجاهز" التالي أو حتى الاستدعاء التالي لـ otTcp الاستلامContiguify() أو otTcpCommitReceived().
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
||||
قيم الإرجاع |
|
otTcpReceivedContiguify
otError otTcpReceiveContiguify( otTcpEndpoint *aEndpoint )
إعادة تنظيم المخزن المؤقت للاستقبال متجاورًا بالكامل في الذاكرة.
هذا الإجراء اختياري، ويمكن للتطبيق أن يجتاز سلسلة المخزن المؤقت المرتبطة التي تم الحصول عليها من خلال الاتصال بـ otTcpReceiveByReference
. قد ترغب بعض التطبيقات في استدعاء هذه الدالة لدفع وقت التخزين المؤقت إلى تسهيل معالجة البيانات، ولكن على حساب تكلفة وحدة المعالجة المركزية (CPU) يمكن إعادة تنظيم البيانات في المخزن المؤقت للاستلام.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
||||
قيم الإرجاع |
|
otTcpSendByExtension
otError otTcpSendByExtension( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
لإضافة بيانات إلى المخزن المؤقت للإرسال من خلال تمديد طول otLinkedBuffer النهائي في المخزن المؤقت للإرسال حسب المبلغ المحدّد.
وإذا كان المخزن المؤقت للإرسال فارغًا، سيتعذّر إتمام العملية.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
otTcpSendByReference
otError otTcpSendByReference( otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags )
لإضافة بيانات يشير إليها المخزن المؤقت المرتبط الذي يشير إليه aBuffer
إلى المخزن المؤقت للإرسال.
عند إجراء استدعاء ناجح لهذه الوظيفة، يكون المخزن المؤقت المرتبط والبيانات التي تشير إليها مملوكًا لحزمة حزم الشفافية والموافقة (TCP)، ويجب ألا يتم تعديلها من خلال التطبيق حتى يعرض رد الاتصال "الإرسال الذي تم إرساله" ملكية هذه العناصر إلى التطبيق. من المقبول استدعاء هذه الدالة لإضافة ذاكرة تخزين مؤقت أخرى مرتبطة إلى قائمة انتظار الإرسال، حتى إذا لم يتم تنشيط استدعاء "إرسال تم" لاستدعاء سابق لهذه الدالة.
ملاحظة: يجب ألا تكون السلسلة aBuffer
مسلسلة، ويجب أن يكون حقل mNext خالٍ. إذا تمت إضافة بيانات إضافية بعد هذه المكالمة مباشرةً، يجب استخدام علامة OT_TCP_SEND_MORE_TO_COME كتلميح لتنفيذ بروتوكول TCP.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
otTcpSendEndOfStream
otError otTcpSendEndOfStream( otTcpEndpoint *aEndpoint )
تُبلِغ هذه السياسة بأنّ نقطة الاتصال هذه لن ترسل مزيدًا من البيانات.
ويجب استخدامه عندما لا يحتوي التطبيق على المزيد من البيانات لإرسالها إلى نظير الشبكة. بالنسبة إلى هذا الاتصال، ستؤدّي عمليات القراءة المستقبلية على نظير الشبكة إلى الشرط "نهاية البث"، وستتعذّر عمليات الكتابة في المستقبل على نقطة النهاية هذه.
لا ينطبق شرط "إنهاء البث" إلا بعد تلقّي أي بيانات مقدّمة سابقًا على حزمة TCP لإرسالها من جانب زميل الاتصال.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
||||
قيم الإرجاع |
|
otTcpStopالاستماع
otError otTcpStopListening( otTcpListener *aListener )
تؤدي إلى إيقاف أداة معالجة بروتوكول التحكم في الإرسال هذه عن الاستماع إلى الاتصالات الواردة.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
||||
قيم الإرجاع |
|
وحدات ماكرو
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 368
تم اختيار OT_TCP_ENDPOINT_TCB_SIZE_BASE وOT_TCP_ENDPOINT_TCB_NUM_POINTERS بحيث يكون حقل 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_POINTERS بحيث يكون حقل mTcbالاستماع هنا هو otTcpالاستماع بنفس حجم حقل tcpcb_listen في TCPlp.
يُعدّ ذلك ضروريًا لأنّه تتم معالجة حقل mTcbالاستماع إلى عدم وضوح في بيانه، على أنه يتم التعامل مع بنية تكلفة النقرة المحسّنة في عملية تنفيذ بروتوكول 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 من رمز المصدر، وهو متاح على GitHub. للحصول على مزيد من المعلومات أو للمساهمة في المستندات، يمكنك الاطّلاع على المراجع.