nl:: اینت:: TCPEndPoint
#include <src/inet/TCPEndPoint.h>
اشیاء این کلاس نشان دهنده نقاط پایانی انتقال TCP هستند.
خلاصه
Nest Inet Layer روشهایی را برای تعامل با نقاط پایانی انتقال TCP (سوکتهای SOCK_STREAM در سیستمهای لینوکس و برگرفته از BSD) یا بلوکهای کنترل پروتکل LwIP TCP محصور میکند، همانطور که سیستم بر این اساس پیکربندی میشود.
وراثت
از: nl::Inet::EndPointBasis ارث می بردانواع عمومی | |
---|---|
@10 { | شمارش وضعیت دینامیکی پایه نقطه پایانی زیربنایی. |
OnAcceptErrorFunct )(TCPEndPoint *endPoint, INET_ERROR err) | typedefvoid(* نوع عملکرد رسیدگی به رویداد خطای پذیرش اتصال. |
OnConnectCompleteFunct )(TCPEndPoint *endPoint, INET_ERROR err) | typedefvoid(* نوع عملکرد مدیریت رویداد ایجاد اتصال. |
OnConnectionClosedFunct )(TCPEndPoint *endPoint, INET_ERROR err) | typedefvoid(* نوع عملکرد مدیریت رویداد ایجاد اتصال. |
OnConnectionReceivedFunct )(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort) | typedefvoid(* نوع اتصال تابع مدیریت رویداد دریافت شده است. |
OnDataReceivedFunct )(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data) | typedefvoid(* نوع عملکرد مدیریت رویداد دریافت داده. |
OnDataSentFunct )(TCPEndPoint *endPoint, uint16_t len) | typedefvoid(* نوع عملکرد مدیریت رویداد انتقال داده. |
OnPeerCloseFunct )(TCPEndPoint *endPoint) | typedefvoid(* نوع عملکرد مدیریت رویداد دریافت نیمه بسته. |
OnTCPSendIdleChangedFunct )(TCPEndPoint *endPoint, bool isIdle) | typedefvoid(* نوع TCP SendIdle عملکرد کنترل سیگنال را تغییر داد. |
صفات عمومی | |
---|---|
OnAcceptError | تابع رسیدگی به رویداد پذیرش اتصال نقطه پایانی. |
OnConnectComplete | تابع مدیریت رویداد برقراری اتصال نقطه پایانی. |
OnConnectionClosed | نمایندگی تابع رسیدگی به رویداد نزدیک نقطه پایانی. |
OnConnectionReceived | اتصال نقطه پایانی تابع مدیریت رویداد را دریافت می کند. |
OnDataReceived | تابع مدیریت رویداد دریافت متن پیام نقطه پایانی. |
OnDataSent | تابع مدیریت رویداد انتقال متن پیام نقطه پایانی. |
OnPeerClose | نماینده تابع مدیریت رویداد دریافت نیمه بسته نقطه پایانی. |
OnTCPSendIdleChanged | هنگامی که بیکاری کانال ارسال اتصال TCP تغییر می کند، تابع مدیریت رویداد، سیگنالینگ نقطه پایانی را واگذار می کند. |
ReceiveEnabled | bool سوئیچ کنترلی که نشان می دهد آیا برنامه در حال دریافت داده است یا خیر. |
State | enum nl::Inet::TCPEndPoint::@10 وضعیت دینامیکی پایه نقطه پایانی زیربنایی. |
توابع عمومی | |
---|---|
Abort (void) | void نقطه پایانی را به طور کامل ببندید، به عبارت دیگر، بسته های RST را ارسال کنید. |
AckReceive (uint16_t len) | دریافت متن پیام را تایید کنید. |
Bind (IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr) | نقطه پایانی را به یک آدرس IP رابط متصل کنید. |
Close (void) | بسته شدن کامل TCP را آغاز کنید، به عبارت دیگر، با ارسال و دریافت به پایان رسید. |
Connect ( IPAddress addr, uint16_t port, InterfaceId intf) | اتصال TCP را راه اندازی کنید. |
DisableKeepAlive (void) | گزینه TCP "keep-alive" را غیرفعال کنید. |
DisableReceive (void) | void غیرفعال کردن دریافت |
EnableKeepAlive (uint16_t interval, uint16_t timeoutCount) | گزینه TCP "keep-alive" را فعال کنید. |
EnableNoDelay (void) | NoDelay را فعال کنید. |
EnableReceive (void) | void فعال کردن دریافت |
Free (void) | void بسته شدن کامل TCP را آغاز کنید (یا ادامه دهید)، بدون توجه به خطاها. |
GetLocalInfo ( IPAddress *retAddr, uint16_t *retPort) | آدرس IP و پورت TCP نقطه پایانی محلی را استخراج کنید. |
GetPeerInfo ( IPAddress *retAddr, uint16_t *retPort) const | آدرس IP و پورت TCP نقطه پایانی راه دور را استخراج کنید. |
IsConnected (void) const | bool استخراج کنید که آیا اتصال TCP برقرار است یا خیر. |
Listen (uint16_t backlog) | نقطه پایانی را برای دریافت پیام های TCP آماده کنید. |
LogId (void) | uint16_t یک شناسه برای نقطه پایانی بدست آورید. |
MarkActive (void) | void توجه به فعالیت، به عبارت دیگر، تنظیم مجدد تایمر بیکار. |
PendingReceiveLength (void) | uint32_t طول داده های دریافت ناشناس را استخراج کنید. |
PendingSendLength (void) | uint32_t طول داده در انتظار اولین ارسال را استخراج کنید. |
PutBackReceivedData ( Weave::System::PacketBuffer *data) | متن پیام را به سر صف دریافت برگردانید. |
Send ( Weave::System::PacketBuffer *data, bool push) | ارسال متن پیام در اتصال TCP. |
SetConnectTimeout (const uint32_t connTimeoutMsecs) | void مهلت زمانی را برای موفقیت تنظیم کنید یا خطا را برگردانید. |
SetUserTimeout (uint32_t userTimeoutMillis) | گزینه TCP TCP_USER_TIMEOUT سوکت را تنظیم کنید. |
Shutdown (void) | TCP نیمه بسته را شروع کنید، به عبارت دیگر، با ارسال به پایان رسید. |
انواع عمومی
@10
@10
وضعیت دینامیکی پایه نقطه پایانی زیربنایی.
اشیاء در حالت "آماده" مقداردهی اولیه می شوند، به حالت های بعدی که مربوط به ساده سازی حالت های ماشین حالت حمل و نقل TCP است، بروید.
توجه: شمارش حالت kBasisState_Closed
به دلایل سازگاری باینری تاریخی به kState_Ready
نگاشت شده است. kState_Closed
موجود برای شناسایی جداگانه تمایز بین "هنوز باز نشده" و "قبلاً باز شده اکنون بسته است" وجود دارد که قبلاً در kState_Ready
و kState_Closed
وجود داشت.
OnAcceptErrorFunct
void(* OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
نوع عملکرد رسیدگی به رویداد خطای پذیرش اتصال.
تابعی از این نوع را به عضو نماینده OnAcceptError
برای پردازش رویدادهای خطای پذیرش اتصال در endPoint
. آرگومان err
جزئیات خاصی را در مورد نوع خطا ارائه می دهد.
جزئیات | |||||
---|---|---|---|---|---|
مولفه های |
|
OnConnectCompleteFunct
void(* OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
نوع عملکرد مدیریت رویداد ایجاد اتصال.
تابعی از این نوع را به عضو نماینده OnConnectComplete
برای پردازش رویدادهای برقراری اتصال در endPoint
. استدلال err
اتصالات موفق را از شکست متمایز می کند.
جزئیات | |||||
---|---|---|---|---|---|
مولفه های |
|
OnConnectionClosedFunct
void(* OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
نوع عملکرد مدیریت رویداد ایجاد اتصال.
تابعی از این نوع را به عضو نماینده OnConnectionClosed
برای پردازش رویدادهای خاتمه اتصال در endPoint
. استدلال err
پایان موفقیت آمیز را از شکست متمایز می کند.
جزئیات | |||||
---|---|---|---|---|---|
مولفه های |
|
OnConnectionReceivedFunct
void(* OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
نوع اتصال تابع مدیریت رویداد دریافت شده است.
تابعی از این نوع را به عضو نماینده OnConnectionReceived
برای پردازش رویدادهای دریافت اتصال در listeningEndPoint
ارائه دهید. conEndPoint
نقطه پایانی تازه دریافت شده در آدرس IP peerAddr
و پورت TCP peerPort
قرار دارد.
جزئیات | |||||||||
---|---|---|---|---|---|---|---|---|---|
مولفه های |
|
OnDataReceivedFunct
void(* OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
نوع عملکرد مدیریت رویداد دریافت داده.
تابعی از این نوع را به عضو نماینده OnDataReceived
برای پردازش رویدادهای دریافت داده در endPoint
که در آن data
متن پیام دریافتی است، ارائه دهید.
جزئیات | |||||
---|---|---|---|---|---|
مولفه های |
|
یک کنترل کننده رویداد دریافت داده باید داده های پردازش شده با استفاده از روش AckReceive
را تأیید کند. متد Free
در بافر داده نیز باید فراخوانی شود مگر اینکه به جای آن از PutBackReceivedData
استفاده شود.
OnDataSentFunct
void(* OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
نوع عملکرد مدیریت رویداد انتقال داده.
تابعی از این نوع را به عضو نماینده OnDataSent
برای پردازش رویدادهای انتقال داده در endPoint
که در آن len
طول متن پیام اضافه شده به پنجره انتقال TCP است که واجد شرایط ارسال توسط پشته شبکه زیرین است.
جزئیات | |||||
---|---|---|---|---|---|
مولفه های |
|
OnPeerCloseFunct
void(* OnPeerCloseFunct)(TCPEndPoint *endPoint)
نوع عملکرد مدیریت رویداد دریافت نیمه بسته.
تابعی از این نوع را به عضو نماینده OnPeerClose
برای پردازش رویدادهای خاتمه اتصال در endPoint
.
جزئیات | |||
---|---|---|---|
مولفه های |
|
OnTCPSendIdleChangedFunct
void(* OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
نوع TCP SendIdle عملکرد کنترل سیگنال را تغییر داد.
تابعی از این نوع را به عضو نماینده OnTCPSendIdleChanged
تا رویداد کانال ارسال TCPEndPoint در حال تغییر بین حالت بیکار و غیر فعال باشد.
جزئیات | |||||
---|---|---|---|---|---|
مولفه های |
|
صفات عمومی
OnConnectComplete
OnConnectCompleteFunct OnConnectComplete
تابع مدیریت رویداد برقراری اتصال نقطه پایانی.
OnConnectionClosed
OnConnectionClosedFunct OnConnectionClosed
نمایندگی تابع رسیدگی به رویداد نزدیک نقطه پایانی.
OnConnectionReceived
OnConnectionReceivedFunct OnConnectionReceived
اتصال نقطه پایانی تابع مدیریت رویداد را دریافت می کند.
OnTCPSendIdleChanged
OnTCPSendIdleChangedFunct OnTCPSendIdleChanged
هنگامی که بیکاری کانال ارسال اتصال TCP تغییر می کند، تابع مدیریت رویداد، سیگنالینگ نقطه پایانی را واگذار می کند.
این توسط لایه های بالایی برای انجام اقدامات مناسب بر اساس اینکه آیا داده های ارسالی به طور قابل اعتماد به همتا تحویل داده شده است استفاده می شود.
ReceiveEnabled
bool ReceiveEnabled
سوئیچ کنترلی که نشان می دهد آیا برنامه در حال دریافت داده است یا خیر.
دولت
enum nl::Inet::TCPEndPoint::@10 State
وضعیت دینامیکی پایه نقطه پایانی زیربنایی.
اشیاء در حالت "آماده" مقداردهی اولیه می شوند، به حالت های بعدی که مربوط به ساده سازی حالت های ماشین حالت حمل و نقل TCP است، بروید.
توجه: شمارش حالت kBasisState_Closed
به دلایل سازگاری باینری تاریخی به kState_Ready
نگاشت شده است. kState_Closed
موجود برای شناسایی جداگانه تمایز بین "هنوز باز نشده" و "قبلاً باز شده اکنون بسته است" وجود دارد که قبلاً در kState_Ready
و kState_Closed
وجود داشت.
توابع عمومی
سقط
void Abort( void )
نقطه پایانی را به طور کامل ببندید، به عبارت دیگر، بسته های RST را ارسال کنید.
AckReceive
INET_ERROR AckReceive( uint16_t len )
دریافت متن پیام را تایید کنید.
از این روش برای تأیید دریافت تمام یا بخشی از داده های دریافتی استفاده کنید. اگر len
بزرگتر از کل داده های دریافتی تایید نشده باقی مانده باشد، معنای عملیاتی تعریف نشده است.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
مولفه های |
| ||||||
ارزش های بازگشتی |
|
بستن
INET_ERROR Bind( IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr )
نقطه پایانی را به یک آدرس IP رابط متصل کنید.
نقطه پایانی را به آدرس IP رابط شبکه مشخص شده متصل می کند.
جزئیات | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||
ارزش های بازگشتی |
|
در LwIP، این روش نباید با قفل پشته LwIP که قبلاً به دست آمده فراخوانی شود.
نزدیک
INET_ERROR Close( void )
بسته شدن کامل TCP را آغاز کنید، به عبارت دیگر، با ارسال و دریافت به پایان رسید.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
ارزش های بازگشتی |
|
اتصال
INET_ERROR Connect( IPAddress addr, uint16_t port, InterfaceId intf )
اتصال TCP را راه اندازی کنید.
If possible, then this method initiates a TCP connection to the destination \c addr (with \c intf used as the scope identifier for IPv6 link-local destinations) and \c port.
جزئیات | |||||||||
---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||
ارزش های بازگشتی |
|
DisableKeepAlive
INET_ERROR DisableKeepAlive( void )
گزینه TCP "keep-alive" را غیرفعال کنید.
TCPEndPoint::DisableKeepAlive .
پروب های TCP keepalive را در اتصال TCP مرتبط غیرفعال کنید.
جزئیات | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
ارزش های بازگشتی |
|
نکته: این روش فقط زمانی قابل فراخوانی است که نقطه پایانی در یکی از حالت های متصل باشد. در صورتی که keepalives در نقطه پایانی فعال نشده باشد، این روش کاری انجام نمی دهد.
DisableReceive
void DisableReceive( void )
غیرفعال کردن دریافت
همه کنترل کننده های رویداد را غیرفعال کنید. دادههای ارسال شده به نقطه پایانی که دریافت را غیرفعال میکند، تا زمانی که پنجره دریافت تمام شود تأیید میشود.
EnableKeepAlive را فعال کنید
INET_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
گزینه TCP "keep-alive" را فعال کنید.
TCPEndPoint::EnableKeepAlive .
شروع به انتقال خودکار قطعات پروب "keep-alive" TCP در interval
ثانیه. پس از دریافت پاسخ منفی، یا پس از ارسال بخشهای probe timeoutCount
بدون دریافت پاسخ مثبت، اتصال بهطور خودکار قطع میشود.
جزئیات | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||
ارزش های بازگشتی |
|
برای جزئیات مشخصات به RFC 1122، بخش 4.2.3.6 مراجعه کنید.
پروب های TCP keepalive را در اتصال TCP مرتبط فعال کنید.
نکته: این روش فقط زمانی قابل فراخوانی است که نقطه پایانی در یکی از حالت های متصل باشد. این روش را می توان چندین بار فراخوانی کرد تا فاصله نگهداری یا شمارش تایم اوت تنظیم شود.
جزئیات | |||||
---|---|---|---|---|---|
مولفه های |
|
NoDelay را فعال کنید
INET_ERROR EnableNoDelay( void )
NoDelay را فعال کنید.
با تنظیم گزینه های سوکت TCP_NODELAY، الگوریتم بافر nagle را در TCP خاموش کنید.
EnableReceive را فعال کنید
void EnableReceive( void )
فعال کردن دریافت
فعال کردن همه کنترل کننده های رویداد. دادههای ارسال شده به نقطه پایانی که دریافت را غیرفعال میکند، تا زمانی که پنجره دریافت تمام شود تأیید میشود.
رایگان
void Free( void )
بسته شدن کامل TCP را آغاز کنید (یا ادامه دهید)، بدون توجه به خطاها.
شی به استخر آزاد برگردانده می شود و همه مراجع باقی مانده کاربر متعاقباً نامعتبر هستند.
GetLocalInfo
INET_ERROR GetLocalInfo( IPAddress *retAddr, uint16_t *retPort )
آدرس IP و پورت TCP نقطه پایانی محلی را استخراج کنید.
از مقادیر اشاره گر NULL
برای هر یک از آرگومان ها استفاده نکنید.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
مولفه های |
| ||||||
ارزش های بازگشتی |
|
GetPeerInfo
INET_ERROR GetPeerInfo( IPAddress *retAddr, uint16_t *retPort ) const
آدرس IP و پورت TCP نقطه پایانی راه دور را استخراج کنید.
از مقادیر اشاره گر NULL
برای هر یک از آرگومان ها استفاده نکنید.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
مولفه های |
| ||||||
ارزش های بازگشتی |
|
وصل است
bool IsConnected( void ) const
استخراج کنید که آیا اتصال TCP برقرار است یا خیر.
گوش کن
INET_ERROR Listen( uint16_t backlog )
نقطه پایانی را برای دریافت پیام های TCP آماده کنید.
اگر State
قبلاً kState_Listening
، هیچ عملیاتی انجام نمیشود، در غیر این صورت State
روی kState_Listening
تنظیم میشود و نقطه پایانی برای دریافت پیامهای TCP، با توجه به معنایی پلتفرم، آماده میشود.
جزئیات | |||||
---|---|---|---|---|---|
مولفه های |
| ||||
ارزش های بازگشتی |
|
در برخی از سیستم عامل ها، آرگومان backlog
استفاده نمی شود (عمق صف ثابت است؛ تنها یک اتصال ممکن است در هر زمان پذیرفته شود).
در سیستمهای LwIP، این روش نباید با قفل پشته LwIP که قبلاً به دست آمده فراخوانی شود
LogId
uint16_t LogId( void )
یک شناسه برای نقطه پایانی بدست آورید.
جزئیات | |
---|---|
برمی گرداند | یک شناسه منحصربهفرد غیرشفاف را برای گزارشهای استفاده برمیگرداند. |
MarkActive
void MarkActive( void )
توجه به فعالیت، به عبارت دیگر، تنظیم مجدد تایمر بیکار.
تایمر بیکار را صفر کنید.
در حال انتظار ReceiveLength
uint32_t PendingReceiveLength( void )
طول داده های دریافت ناشناس را استخراج کنید.
جزئیات | |
---|---|
برمی گرداند | تعداد بایتهایی در صف دریافت که هنوز با AckReceive(uint16_t len) تأیید نشدهاند. |
در انتظار ارسال طول
uint32_t PendingSendLength( void )
طول داده در انتظار اولین ارسال را استخراج کنید.
جزئیات | |
---|---|
برمی گرداند | تعداد بایت های ارسال نشده در صف ارسال. |
PutBackReceivedData
INET_ERROR PutBackReceivedData( Weave::System::PacketBuffer *data )
متن پیام را به سر صف دریافت برگردانید.
این روش را فقط میتوان توسط کنترلکنندههای رویداد دریافت داده فراخوانی کرد تا بخش ناشناس داده را در صف دریافت برگرداند. معنای عملیاتی تعریف نشده است اگر تماس گیرنده خارج از محدوده کنترل کننده رویداد دریافت داده باشد، data
Weave::System::PacketBuffer
ارائه شده به کنترل کننده نباشند، یا data
شامل بخش تایید نشده باقیمانده پس از بایت های تایید شده توسط یک دستگاه نباشند، معنای عملیاتی تعریف نشده است. تماس قبلی با روش AckReceive(uint16_t len)
.
جزئیات | |||||
---|---|---|---|---|---|
مولفه های |
| ||||
ارزش های بازگشتی |
|
ارسال
INET_ERROR Send( Weave::System::PacketBuffer *data, bool push )
ارسال متن پیام در اتصال TCP.
متد Weave::System::PacketBuffer::Free
بر روی آرگومان data
فراخوانی می شود، صرف نظر از موفقیت یا عدم موفقیت انتقال.
جزئیات | |||||
---|---|---|---|---|---|
مولفه های |
| ||||
ارزش های بازگشتی |
|
SetConnectTimeout
void SetConnectTimeout( const uint32_t connTimeoutMsecs )
مهلت زمانی را برای موفقیت تنظیم کنید یا خطا را برگردانید.
جزئیات | |||
---|---|---|---|
مولفه های |
|
SetUserTimeout
INET_ERROR SetUserTimeout( uint32_t userTimeoutMillis )
گزینه TCP TCP_USER_TIMEOUT سوکت را تنظیم کنید.
وقتی مقدار بزرگتر از 0 باشد، حداکثر زمانی را بر حسب میلی ثانیه مشخص می کند که داده های ارسالی ممکن است قبل از اینکه TCP اتصال مربوطه را اجباراً ببندد، تایید نشده باقی بماند. اگر مقدار گزینه به عنوان 0 مشخص شود، TCP از پیش فرض سیستم استفاده می کند. برای جزئیات بیشتر به RFC 5482 مراجعه کنید.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
مولفه های |
| ||||||
ارزش های بازگشتی |
|
گزینه TCP timeout socket کاربر را تنظیم کنید.
وقتی مقدار بزرگتر از 0 باشد، حداکثر زمانی را بر حسب میلی ثانیه مشخص می کند که داده های ارسالی ممکن است قبل از اینکه TCP اتصال مربوطه را اجباراً ببندد، تایید نشده باقی بماند. اگر مقدار گزینه به عنوان 0 مشخص شود، TCP از پیش فرض سیستم استفاده می کند. برای جزئیات بیشتر به RFC 5482 مراجعه کنید.
نکته: این روش فقط زمانی قابل فراخوانی است که نقطه پایانی در یکی از حالت های متصل باشد. این روش را می توان چندین بار فراخوانی کرد تا فاصله نگهداری یا شمارش تایم اوت تنظیم شود.
خاموش شدن
INET_ERROR Shutdown( void )
TCP نیمه بسته را شروع کنید، به عبارت دیگر، با ارسال به پایان رسید.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
ارزش های بازگشتی |
|