nl:: اینت:: TCPEndPoint
#include <src/inet/TCPEndPoint.h>
اشیاء این کلاس نشان دهنده نقاط پایانی انتقال TCP هستند.
خلاصه
Nest Inet Layer روشهایی را برای تعامل با نقاط پایانی انتقال TCP (سوکتهای SOCK_STREAM در لینوکس و سیستمهای مشتقشده از BSD) یا بلوکهای کنترل پروتکل LwIP TCP محصور میکند، همانطور که سیستم بر این اساس پیکربندی میشود.
ارث
از: nl::Inet::EndPointBasis ارث می بردانواع عمومی | |
---|---|
@10 { | enum وضعیت دینامیکی پایه نقطه پایانی زیربنایی. |
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-live" 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 نیمه بسته را شروع کنید، به عبارت دیگر، با ارسال به پایان رسید.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
ارزش های بازگشتی |
|