קל לארגן דפים בעזרת אוספים אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.

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)
הספירה הזו מגדירה את פעולות החיבור הנכנסות.

סוג Dedef

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
המבנה הזה מכיל ארגומנטים לפונקציה otTcpendpointize().
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
המבנה הזה מכיל ארגומנטים לפונקציה otTcpListenerfirstize() .
otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining) Typedef
void(*
קריאה חוזרת זו מציינת את מספר הבייטים הזמינים לצריכה במאגר הנתונים הזמני.
otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData) Typedef
void(*
השיחה החוזרת הזו מיידעת את האפליקציה כי הנתונים בקובץ aData שצוינו אושרו על ידי אפליקציות דומות, וש-aData וגם הנתונים שהיא מכילה יכולים לקבל בחזרה את האפליקציה.

פונקציות

otTcpAbort(otTcpEndpoint *aEndpoint)
מאלץ את חיבור ה-TCP המשויך לנקודת הקצה הזו של TCP.
otTcpBind(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName)
מחייבת את נקודת הקצה של TCP לכתובת IP וליציאה.
otTcpCommitReceive(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
מקבצים על מחסנית ה-TCP שהאפליקציה סיים לעבד aNumBytes בייטים של נתונים בתחילת מאגר הנתונים הזמני, ושאין צורך להמשיך בערימת ה-TCP במאגרים האלה.
otTcpConnect(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags)
הקלטת המארח והיציאה המרוחקים בחיבור הזה.
otTcpEndpointDeinitialize(otTcpEndpoint *aEndpoint)
מאתחל את נקודת הקצה הזו של TCP.
otTcpEndpointGetContext(otTcpEndpoint *aEndpoint)
void *
קבלת מצביע ההקשר המשויך ל-aEndpoint בזמן האתחול.
otTcpEndpointGetInstance(otTcpEndpoint *aEndpoint)
מקבל את ה-OTInstance שמשויך ל-aEndpoint בזמן האתחול.
otTcpEndpointInitialize(otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs)
מפעיל נקודת קצה ב-TCP.
otTcpGetLocalAddress(const otTcpEndpoint *aEndpoint)
const otSockAddr *
מקבלת מצביע לנקודת קצה (TCP) ולנקודת יציאה מקומיות של TCP.
otTcpGetPeerAddress(const otTcpEndpoint *aEndpoint)
const otSockAddr *
מקבל מצביע לנקודת קצה ויציאה של TCP&33.
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)
מאתחל פונקציות מסוג listener של TCP.
otTcpReceiveByReference(otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer)
מספק לאפליקציה שרשרת מאגר של מאגר בין נתונים המכילים הפניה לנתונים שנמצאים כרגע ב-TCP, מאגר נתונים זמני.
otTcpReceiveContiguify(otTcpEndpoint *aEndpoint)
ארגון מחדש של מאגר הנתונים הזמני יהיה בזיכרון רציף לחלוטין.
otTcpSendByExtension(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
מוסיף נתונים למאגר הנתונים הזמני על ידי הארכת משך הזמן הסופי של otLinkedBuffer במאגר הנתונים הזמני, בסכום שצוין.
otTcpSendByReference(otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags)
מוסיף למאגר הנתונים נתונים שאליהם מופנה מאגר הנתונים המקושרים. מצביע על כך aBuffer.
otTcpSendEndOfStream(otTcpEndpoint *aEndpoint)
מודיע לעמית החיבור שנקודת הקצה הזו של TCP לא תשלח נתונים נוספים.
otTcpStopListening(otTcpListener *aListener)
גורם למאזינים של TCP להפסיק להפסיק חיבורים נכנסים.

מבנים

otLinkedBuffer

מבנה של מאגר במאגר נתונים זמני לשימוש עם TCP.

otTcpendpoint

המבנה הזה מייצג נקודת קצה (endpoint) של TCP.

otTcpendpointizeizeArgs

המבנה הזה מכיל ארגומנטים לפונקציה otTcpendpointize().

otTcpListener

המבנה הזה מייצג פונקציות מסוג listener של TCP.

otTcpListenererizeArgs

המבנה הזה מכיל ארגומנטים לפונקציה otTcpListenerfirstize() .

מספור

Enum אנונימי

 anonymous enum

בספירה הזו מוגדרים סימונים שהועברו ל-otTcpConnect() .

Enum אנונימי

 anonymous enum

בספירה הזו מוגדרים סימונים שהועברו אל otTcpSendByReference.

otTcpמנותקים

 otTcpDisconnectedReason

otTcpInboundConnectionAction

 otTcpIncomingConnectionAction

הספירה הזו מגדירה את פעולות החיבור הנכנסות.

ההגדרה הזו משמשת לקריאה חוזרת (callback) של otTcpAcceptReady() .

מאפיינים
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT

מאשרים את החיבור הנכנס.

OT_TCP_INCOMING_CONNECTION_ACTION_DEFER

דחיית החיבור באופן שקט.

OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE

דוחים את החיבור הנכנס.

סוג Dedef

otLinkedBuffer

struct otLinkedBuffer otLinkedBuffer

מבנה של מאגר במאגר נתונים זמני לשימוש עם TCP.

מבנה otLinkedBuffer מתייחס למערך בייטים בזיכרון, באמצעות mData ו-mLength. השדה mNext משמש ליצירת שרשרת של מבנים מסוג otLinkedBuffer.

OTTcpAcceptDone

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

קריאה חוזרת זו מציינת שחיבור ה-TCP מוכן כעת לתקשורת דו-כיוונית.

במקרה של TCP Quick Open, זה יכול להיות לפני שלחיצת היד של ה-TCP הושלמה בפועל. האפליקציה מסופקת עם מצביעי ההקשר הן עבור event listener של 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 הזה באמצעות otTcpendpointize(). לאחר מכן, האפליקציה תחזיר OT_TCP_INCOMING_CONNECTION_ACTION_CONFIRM.

לחלופין, האפליקציה יכולה לסרב לקבל את החיבור הנכנס. יש שתי דרכים שבהן האפליקציה יכולה לעשות זאת. ראשית, אם האפליקציה מחזירה את OT_TCP_INCOMING_CONNECTION_ACTION_DEFER, אז ב-OpenThread מתעלמים שקטה מהבקשה ליצירת החיבור. סביר להניח שעמית החיבור יעביר מחדש את הבקשה, ואז הקריאה החוזרת תתבצע על ידי קריאה חוזרת (callback). האפשרות הזו חשובה אם משאבים אינם זמינים כרגע לקבלת החיבור, אבל ייתכן שהם יהיו זמינים כשעמית החיבור יעביר את הניסיון ליצירת החיבור. שנית, אם האפליקציה מחזירה 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

otTcpendpointizeArgs

struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs

המבנה הזה מכיל ארגומנטים לפונקציה otTcpendpointize().

אישור OTTcp

void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)

קריאה חוזרת זו מודיעה לאפליקציה שלחיצת היד של TCP תלת-כיוונית הושלמה ושחיבור זה נוצר.

פרטים
פרמטרים
[in] aEndpoint
נקודת הקצה של TCP שהחיבור שלה נוצר עכשיו.

OTTcpProgress

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

הקריאה החוזרת הזו מודיעה לאפליקציה אם בוצעה התקדמות בהעברת נתונים ממאגר הנתונים הזמני לנמען.

הקריאה החוזרת הזו אינה נחוצה לפעולה נכונה של TCP. רוב האפליקציות יכולות להסתמך רק על הקריאה החוזרת ( tTcpSendDone() כדי לטעון מחדש מאגרים זמניים לאחר שמקבץ ה-TCP יסתיים באמצעותם. המטרה של הקריאה החוזרת הזו היא לתמוך באפליקציות מתקדמות שנהנות ממידע מפורט יותר על האופן שבו החיבור מתקדם קדימה בהעברת נתונים לאפליקציות דומות.

פעולת הקריאה החוזרת הזו קשורה בקשר הדוק לשליחת השליחה של TCP&#39. ניתן להבין את מאגר הנתונים הזמני בתור שני אזורים. קודם כל, יש את האזור "in-flight" בחלק העליון (הקדמי) של מאגר השליחה. הוא מתייחס לנתונים שנשלחו לנמען אך עדיין לא אושרו. שנית, יש את האזור "backlog" הכולל את כל הנתונים במאגר הנתונים הזמני, שאינם נמצאים באזור "בטיסה". האזור "backlog" תואם לנתונים שממתינים בתור לשליחה, אבל עדיין לא נשלחו.

הקריאה החוזרת מופעלת בתגובה לשני סוגי אירועים. ראשית, האזור של "in-flight" במאגר הנתונים הזמני עשוי להתכווץ (למשל, כשהנמען מאשר נתונים ששלחנו קודם לכן). שנית, האזור של "backlog" עשוי להתכווץ (למשל, נשלחו נתונים חדשים). שני התנאים האלה מתרחשים בו-זמנית, בתגובה לפלח ACK מהעמיתים כמוך. לכן הם משולבים בהתקשרות אחת חוזרת.

מחסנית ה-TCP משתמשת רק ב-aInSendBuffer בייטים בזנב של מאגר השליחה. כאשר aInSendBuffer מוקטן בסכום של x, המשמעות היא ש-x בייטים נוספים שבעבר היו בחלק העליון של מאגר השליחה, לא נכללים יותר במאגר השליחה (כלומר, מוחלפים) על ידי האפליקציה. הערה: אפשר לשחזר את המבנה של otLinkedBuffer רק אחרי שכל הבייטים שהוא מפנה אליהם כבר לא נמצאים במאגר הנתונים הזמני של השליחה.

הקריאה החוזרת (callback) הזו יוצאת מנקודת הנחה ש-otTcpSendDone() , במשמעות הבאה: אפליקציות יכולות לקבוע מתי יש צורך במאגר נתונים זמני על ידי השוואה בין aInSendBuffer לבין מספר הבייטים בכל מאגר מקושר. עם זאת, אנחנו צופים ש-otTcpSendDone(), שמעביר ישירות את הפרמטרים ש-OTLinkedBuffers יכול לדרוש, יהיה קל יותר לשימוש. אם שתי הקריאות החוזרות נרשמות ומופעלות על ידי אותו אירוע (למשל, אותו פלח ACK התקבל), קריאה חוזרת (otTcpSendDone() תופעל תחילה ולאחר מכן הקריאה החוזרת הזו.

בנוסף, הקריאה החוזרת הזו מספקת aBacklog, המציינת כמה בייטים של נתונים במאגר הנתונים הזמני עדיין לא נמצאים בטיסה. במקרה של אפליקציות שרוצים להוסיף נתונים למאגר הנתונים הזמני רק כשיש הבטחה לשליחתן בקרוב, מומלץ לשלוח נתונים רק כאשר הערך של aBacklog קטן (0 או קרוב ל-0). לדוגמה, אפליקציה עשויה להשתמש ב-aBacklog כדי להגיב לצבירת נתונים על ידי שחרור או צבירת נתונים כדי להימנע מצבירת נתונים.

לאחר קריאה ל-otTcpSendByReference() או ל-otTcpSendByExtension() עם מספר חיובי של בייטים, המערכת תחזיר את הקריאה החוזרת (otTcpforwardProgress()) כדי לציין מתי הבייטים שנוספו למאגר הנתונים יישלחו. ניתן לבצע את הקריאה ל-otTcpforwardProgress() מיד לאחר הוספת הבייטים למאגר השליחה (אם חלק מבייטים אלה נשלחים מיד, מפחיתים את הלו"ז) או בעתיד בעתיד (לאחר שהחיבור ישלח חלק מהנתונים או את כולם, ויפחית את הלו"ז). הביטוי "באופן מיידי," אנחנו קובעים שהשיחה החוזרת תבוצע באופן מיידי במשימה. כדי להימנע ממורכבות הקשורה למערך החזרות, הקריאה החוזרת (otTcpforwardProgress()) אף פעם לא נקראת ישירות מהפונקציות otTcpSendByReference() או otTcpSendByExtension() .

פרטים
פרמטרים
[in] aEndpoint
נקודת הקצה של TCP לחיבור.
[in] aInSendBuffer
מספר הבייטים במאגר השליחה (סיכום של "in-flight" ו-"backlog").
[in] aBacklog
מספר הבייטים שממתינים בתור לשליחה אבל עדיין לא נשלחו (האזור "backlog").

otTcpInboundConnectionAction

enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction

הספירה הזו מגדירה את פעולות החיבור הנכנסות.

ההגדרה הזו משמשת לקריאה חוזרת (callback) של otTcpAcceptReady() .

OTTcpListener

struct otTcpListener otTcpListener

otTcpListenererizeArgs

struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs

המבנה הזה מכיל ארגומנטים לפונקציה otTcpListenerfirstize() .

otTcpreceipt זמין

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

קריאה חוזרת זו מציינת את מספר הבייטים הזמינים לצריכה במאגר הנתונים הזמני.

הוא ייקרא בכל פעם שבייטים יצורפו למאגר הנתונים שהתקבלו וכשיגיע סוף השידור. אם הגעת לסוף השידור (כלומר, אם לא יהיו נתונים נוספים לקריאה כי העמית לחיבור סגר את סיום החיבור לכתיבה), aEndOfStream הוא TRUE. לבסוף, aBytesRemaining מציין את הקיבולת שנותרה במאגר הנתונים הזמני כדי לשמור נתונים נוספים שיגיעו.

פרטים
פרמטרים
[in] aEndpoint
נקודת הקצה של TCP לחיבור.
[in] aBytesAvailable
מספר הבייטים בחיבור.
[in] aEndOfStream
מציין אם ניתן לקבל נתונים נוספים, מעבר למה שכבר נמצא בחיבור.
[in] aBytesRemaining
מספר הבייטים הנוספים שניתן לקבל לפני שמאגר הנתונים שהתקבלו מלא.

OTTcpSendDone

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

השיחה החוזרת הזו מיידעת את האפליקציה כי הנתונים בקובץ aData שצוינו אושרו על ידי אפליקציות דומות, וש-aData וגם הנתונים שהיא מכילה יכולים לקבל בחזרה את האפליקציה.

ה-aData בטוח שהם זהים לאלו המועברים ל-TCP דרך otTcpSendByReference() , כולל תוספים שמופקים דרך otTcpSendByExtension() .

פרטים
פרמטרים
[in] aEndpoint
נקודת הקצה של TCP לחיבור.
[in] aData
מצביע על otLinkedBuffer שניתן לדרוש.

פונקציות

OTTcpAbort

otError otTcpAbort(
  otTcpEndpoint *aEndpoint
)

מאלץ את חיבור ה-TCP המשויך לנקודת הקצה הזו של TCP.

כך, נקודת הקצה של TCP תוצג בחינם לשימוש בחיבור אחר ותריק את השליחה והקבלה של מאגרי נתונים, העברת הבעלות על כל הנתונים שסופקה על ידי האפליקציה בקריאות otTcpSendByReference() ו-otTcpSendByExtension() . הקריאה החוזרת (callbacks) והזיכרון של מאגר הקבלה של TCP משויכים לנקודת הקצה של TCP.

פרטים
פרמטרים
[in] aEndpoint
מצביע על המבנה של נקודת הקצה של TCP שמייצג את נקודת הקצה של TCP לביטול.
ערכי החזרה
OT_ERROR_NONE
החיבור של נקודת הקצה של TCP בוטל.
OT_ERROR_FAILED
ביטול ביטול החיבור של נקודת הקצה TCP&39.

OTTCPBind

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

מחייבת את נקודת הקצה של TCP לכתובת IP וליציאה.

פרטים
פרמטרים
[in] aEndpoint
מצביע אל מבנה נקודת הקצה של TCP כדי לקשר.
[in] aSockName
הכתובת והיציאה שאליהם יש לחייב את נקודת הקצה של TCP.
ערכי החזרה
OT_ERROR_NONE
נקודת הקצה של TCP כובתה בהצלחה.
OT_ERROR_FAILED
טעינת נקודת הקצה של TCP נכשלה.

otTcpCommitGet

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 Quick Open באמצעות aFlags, ובמקרה כזה הפעלת לחיצת היד של חיבור TCP תתבצע באופן מיידי.

פרטים
פרמטרים
[in] aEndpoint
מצביע למבנה של נקודת הקצה ב-TCP כדי להתחבר.
[in] aSockName
כתובת ה-IP והיציאה של המארח שאליו רוצים להתחבר.
[in] aFlags
סימונים המציינים אפשרויות לפעולה זו (ראו ספירה למעלה).
ערכי החזרה
OT_ERROR_NONE
הפעולה הושלמה בהצלחה.
OT_ERROR_FAILED
השלמת הפעולה נכשלה.

otTcpendpointDefirstize

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.

OTTcpEndpointize

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

מפעיל נקודת קצה ב-TCP.

קריאה לפונקציה הזו גורמת ל-OpenThread לעקוב אחרי נקודת הקצה של TCP ולאחסן ולאחזר נתוני TCP בתוך aEndpoint. עליך להימנע מהאפליקציה לגשת לשדות ב-aEndpoint או לשנות אותם ישירות. אם האפליקציה צריכה לקבל חזרה את הגיבוי של זיכרון aEndpoint, היא צריכה לקרוא ל-otTcpendpointDefirstize().

פרטים
פרמטרים
[in] aInstance
מצביע על מופע של OpenThread.
[in] aEndpoint
מצביע על מבנה של נקודת קצה ב-TCP.
[in] aArgs
מצביעה על מבנה של ארגומנטים.
ערכי החזרה
OT_ERROR_NONE
נקודת הקצה TCP נפתחה בהצלחה.
OT_ERROR_FAILED
פתיחת נקודת הקצה של TCP נכשלה.

OTTcpGetLocalAddress

const otSockAddr * otTcpGetLocalAddress(
  const otTcpEndpoint *aEndpoint
)

מקבלת מצביע לנקודת קצה (TCP) ולנקודת יציאה מקומיות של TCP.

ייתכן שהתכנים של המארח והיציאה לא עדכניים, אם השקע הזה לא נמצא במצב מחובר ולא נחסם לאחר הניתוק האחרון.

פרטים
פרמטרים
[in] aEndpoint
נקודת הקצה של TCP שהמארח המקומי והיציאה שלה צריכים לקבל.
החזרות
המארח המקומי והיציאה המקומית של aEndpoint.

otTcpGetPeerAddress

const otSockAddr * otTcpGetPeerAddress(
  const otTcpEndpoint *aEndpoint
)

מקבל מצביע לנקודת קצה ויציאה של TCP&33.

ייתכן שהתכנים של המארח והיציאה לא עדכניים, אם השקע הזה לא במצב מחובר.

פרטים
פרמטרים
[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 מאזינה נכשלה.

otTcpListenerDefirstize

otError otTcpListenerDeinitialize(
  otTcpListener *aListener
)

מאתחל את מאזין ה-TCP הזה.

פירוש הדבר הוא ש-OpenThread כבר לא עוקב אחר המאזינים של ה-TCP האלה ומאתר את כל המשאבים שהוקצה להם על ידי ה-TCP הזה. האפליקציה יכולה להשתמש שוב בזיכרון של גיבוי המאזינים ל-TCP לפי הצורך.

אם מאזין ל-TCP מאזין להאזנה, הוא יפסיק להאזין.

פרטים
פרמטרים
[in] aListener
מצביע למבנה ההאזנה של TCP כדי להפעיל אותו.
ערכי החזרה
OT_ERROR_NONE
אתחול בהצלחה של ה- listener של TCP.
OT_ERROR_FAILED
לא ניתן לאתחל את ה- listener של TCP.

otTcpListenerGetContext

void * otTcpListenerGetContext(
  otTcpListener *aListener
)

קבלת מצביע ההקשר המשויך ל-aListener בזמן האתחול.

פרטים
פרמטרים
[in] aListener
event listener של TCP שההקשר שלו מיועד.
החזרות
מצביע ההקשר המשויך ל-aListener.

otTcpListenerGetInstance

otInstance * otTcpListenerGetInstance(
  otTcpListener *aListener
)

מקבל את ה-OTInstance שמשויך ל-aListener בזמן האתחול.

פרטים
פרמטרים
[in] aListener
כלי ההאזנה של TCP שהמופע שלו צריך להגיע.
החזרות
מצביע ה-otInstance המשויך ל-aListener.

otTcpListenerstarter

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

מאתחל פונקציות מסוג listener של TCP.

קריאה לפונקציה הזו גורמת ל-OpenThread לעקוב אחר המאזינים של ה-TCP ולאחסן ולאחזר נתוני TCP בתוך aListener. עליך להימנע מהאפליקציה לגשת לשדות ב-aListener או לשנות אותם ישירות. אם האפליקציה צריכה לקבל חזרה את זיכרון הגיבוי aListener, היא צריכה לקרוא ל-otTcpListenerDefirstize().

פרטים
פרמטרים
[in] aInstance
מצביע על מופע של OpenThread.
[in] aListener
מצביע על מבנה event listener של TCP.
[in] aArgs
מצביעה על מבנה של ארגומנטים.
ערכי החזרה
OT_ERROR_NONE
אפליקציית ה-TCP נפתחה בהצלחה.
OT_ERROR_FAILED
פתיחת ה- listener של TCP נכשלה.

otTcpGetByReference

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

מספק לאפליקציה שרשרת מאגר של מאגר בין נתונים המכילים הפניה לנתונים שנמצאים כרגע ב-TCP, מאגר נתונים זמני.

שרשרת הפסקה המקושרת בתוקף עד שה- " ReadyReady" הקריאה החוזרת תופעל, או עד לקריאה הבאה אל otTcpGetContiguify() או otTcpCommitGet() .

פרטים
פרמטרים
[in] aEndpoint
מצביע על המבנה של נקודת הקצה של TCP שמייצג את נקודת הקצה של TCP שבה אפשר לקבל נתונים.
[out] aBuffer
מצביע על שרשרת מאגר הנתונים הזמני שמתייחסת לנתונים שנמצאים במאגר הזמני של קבלת הנתונים.
ערכי החזרה
OT_ERROR_NONE
הפעולה הושלמה בהצלחה.
OT_ERROR_FAILED
השלמת הפעולה נכשלה.

otTcpGetContiguify

otError otTcpReceiveContiguify(
  otTcpEndpoint *aEndpoint
)

ארגון מחדש של מאגר הנתונים הזמני יהיה בזיכרון רציף לחלוטין.

הפעולה הזאת אופציונלית. אפשר להשתמש באפליקציה כדי לעבור לשרשרת המאגר המקושרת של otTcpReceiveByReference. אפליקציות מסוימות עשויות לקרוא לפונקציה הזו כדי שמאגר הנתונים של מאגר הנתונים יהיה רציף כדי לפשט את עיבוד הנתונים, אבל זה לבוא על חשבון הזמן של המעבד לסידור מחדש של הנתונים במאגר הנתונים הזמני.

פרטים
פרמטרים
[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; אין לשנות אותם באמצעות האפליקציה עד ש-"שליחת סיום&&; קריאה חוזרת (callback) תחזיר בעלות על האובייקטים האלה לאפליקציה. ניתן להפעיל את הפונקציה הזו כדי להוסיף למאגר 'הבאים בתור' שליחת מאגר זמני נוסף, גם אם הקריאה לפעולה הקודמת עדיין לא הופעלה.

לתשומת ליבכם, אין ליצור שרשרת של aBuffer. השדה mNext צריך להיות NULL. אם נתונים נוספים יתווספו מיד לאחר השיחה, יש להשתמש בסימון OT_TCP_SEND_MORE_TO_COME כרמז להטמעה של TCP.

פרטים
פרמטרים
[in] aEndpoint
מצביע על המבנה של נקודת הקצה של TCP שמייצג את נקודת הקצה של TCP שבה רוצים לשלוח נתונים.
[in] aBuffer
מצביע על שרשרת המאגר המקושרת שמתייחסת לנתונים שצריך להוסיף למאגר הנתונים הזמני.
[in] aFlags
סימונים המציינים אפשרויות לפעולה זו (ראו ספירה למעלה).
ערכי החזרה
OT_ERROR_NONE
הנתונים נוספו למאגר הנתונים הזמני.
OT_ERROR_FAILED
הוספת הנתונים למאגר הנתונים נכשלה.

OTTCPSendOfOfStream

otError otTcpSendEndOfStream(
  otTcpEndpoint *aEndpoint
)

מודיע לעמית החיבור שנקודת הקצה הזו של TCP לא תשלח נתונים נוספים.

יש להשתמש באפשרות הזו אם לאפליקציה אין יותר נתונים לשליחה לקבוצת האפליקציות להשוואה. בהקשר של החיבור הזה, הקראה עתידית של אפליקציית העמיתים לחיבור תגרום לתנאים של "סיום הסטרימינג" וכתיבה עתידית בנקודת הקצה של החיבור תיכשל.

התנאי "end of Stream" חל רק לאחר שנתונים שסופקו בעבר למקבץ ה-TCP לשליחה צריכים להתקבל על ידי העמית לחיבור.

פרטים
פרמטרים
[in] aEndpoint
מצביע למבנה של נקודת הקצה מסוג TCP שיש לסגור.
ערכי החזרה
OT_ERROR_NONE
התור & &מירכאות; סוף הסטרימינג; עבר בהצלחה עבור שידור.
OT_ERROR_FAILED
לא ניתן להוסיף לתור את ה&&d של סוף השידור עבור שידור.

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 368

הערכים OT_TCP_ENDpoint_TCB_SIZE_BASE ו-OT_TCP_ENDpoint_TCB_NUM_PointERS זמינים כך שלשדה mTcb של otTcpendpoint יש גודל זהה למבנה tcpcb ב-TCPlp.

הדרישה הזו הכרחית כי השדה mTcb למרות שהאטימות להצהרה שלו נחשב כ-tcpc b בהטמעת ה-TCP.

OT_TCP_LISTENER_TCB_NUM_PTR

 OT_TCP_LISTENER_TCB_NUM_PTR 3

OT_TCP_LISTENER_TCB_SIZE_BASE

 OT_TCP_LISTENER_TCB_SIZE_BASE 16

הפרמטרים OT_TCP_LISTENER_TCB_SIZE_BASE ו-OT_TCP_LISTENER_TCB_NUM_pointERS נבחרו, כך שלשדה mTcbListener של otTcpListener יש אותו גודל כמו מבנה tcpcb_listen ב-TCPlp.

הדרישה הזו הכרחית כי השדה mTcbListen, למרות שהוא אטום בהודעה, נחשב כ-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. למידע נוסף או כדי להוסיף מידע למסמכים שלנו, יש לעיין במשאבים.