нл:: Инет:: TCPEndPoint
#include <src/inet/TCPEndPoint.h>
Объекты этого класса представляют конечные точки транспорта TCP.
Краткое содержание
Nest Inet Layer инкапсулирует методы взаимодействия с конечными точками транспорта TCP (сокетами SOCK_STREAM в системах на базе Linux и BSD) или блоками управления протоколом TCP LwIP, если система настроена соответствующим образом.
Наследование
Наследуется от: nl::Inet::EndPointBasisПубличные типы | |
---|---|
@10 { | перечисление Базовое динамическое состояние базовой конечной точки. |
OnAcceptErrorFunct )(TCPEndPoint *endPoint, INET_ERROR err) | определение типаvoid(* Тип функции обработки событий ошибки принятия соединения. |
OnConnectCompleteFunct )(TCPEndPoint *endPoint, INET_ERROR err) | определение типаvoid(* Тип функции обработки событий установления соединения. |
OnConnectionClosedFunct )(TCPEndPoint *endPoint, INET_ERROR err) | определение типаvoid(* Тип функции обработки событий установления соединения. |
OnConnectionReceivedFunct )(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort) | определение типаvoid(* Тип соединения получил функцию обработки событий. |
OnDataReceivedFunct )(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data) | определение типаvoid(* Тип функции обработки событий приема данных. |
OnDataSentFunct )(TCPEndPoint *endPoint, uint16_t len) | определение типаvoid(* Тип функции обработки событий передачи данных. |
OnPeerCloseFunct )(TCPEndPoint *endPoint) | определение типаvoid(* Тип функции обработки событий полузакрытого приема. |
OnTCPSendIdleChangedFunct )(TCPEndPoint *endPoint, bool isIdle) | определение типаvoid(* Тип 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 «поддерживать активность». |
DisableReceive (void) | void Отключить прием. |
EnableKeepAlive (uint16_t interval, uint16_t timeoutCount) | Включите опцию TCP «поддерживать активность». |
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 Установите тайм-аут для успешного подключения Connect или возврата ошибки. |
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
предоставляет конкретную информацию о типе ошибки.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
Онконнекткомплетефункт
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
.
Ондатасентфункт
void(* OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
Тип функции обработки событий передачи данных.
Предоставьте функцию этого типа члену делегата OnDataSent
для обработки событий передачи данных в endPoint
, где len
— это длина текста сообщения, добавленного в окно передачи TCP, которое имеет право на отправку базовым сетевым стеком.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
OnPeerCloseFunct
void(* OnPeerCloseFunct)(TCPEndPoint *endPoint)
Тип функции обработки событий полузакрытого приема.
Предоставьте функцию этого типа члену делегата OnPeerClose
для обработки событий завершения соединения на endPoint
.
Подробности | |||
---|---|---|---|
Параметры |
|
ОнTCPSendIdleChangedFunct
void(* OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
Тип TCP SendIdle изменил функцию обработки сигнала.
Предоставьте функцию этого типа члену делегата OnTCPSendIdleChanged
для обработки события канала отправки TCPEndPoint , меняющего состояние между состоянием ожидания и неактивности.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
Публичные атрибуты
OnAcceptError
OnAcceptErrorFunct OnAcceptError
Делегат функции обработки событий принятия соединения конечной точки.
ОнКоннектКомплете
OnConnectCompleteFunct OnConnectComplete
Делегат функции обработки событий установления соединения конечной точки.
OnConnectionClosed
OnConnectionClosedFunct OnConnectionClosed
Делегат функции обработки событий закрытия конечной точки.
OnConnectionReceived
OnConnectionReceivedFunct OnConnectionReceived
Соединение конечной точки получает делегат функции обработки событий.
OnDataReceived
OnDataReceivedFunct OnDataReceived
Делегат функции обработки события приема текста сообщения конечной точки.
Ондатасент
OnDataSentFunct OnDataSent
Делегат функции обработки события передачи текста сообщения конечной точки.
OnPeerClose
OnPeerCloseFunct OnPeerClose
Делегат функции обработки событий полузакрытия конечной точки.
ОнTCPSendIdleChanged
OnTCPSendIdleChangedFunct OnTCPSendIdleChanged
Делегат функции обработки событий, сигнализирующий конечной точке при изменении простоя канала отправки TCP-соединения.
Это используется верхними уровнями для принятия соответствующих мер в зависимости от того, были ли отправленные данные надежно доставлены одноранговому узлу.
Получение включено
bool ReceiveEnabled
Переключатель управления, указывающий, получает ли приложение данные.
Состояние
enum nl::Inet::TCPEndPoint::@10 State
Базовое динамическое состояние базовой конечной точки.
Объекты инициализируются в состоянии «готовность», переходят к последующим состояниям, соответствующим упрощению состояний конечного автомата транспорта TCP.
Примечание. Перечисление состояний kBasisState_Closed
сопоставлено с kState_Ready
по историческим причинам двоичной совместимости. Существующий kState_Closed
существует для отдельного определения различия между «еще не открыто» и «ранее открыто, теперь закрыто», которое существовало ранее в состояниях kState_Ready
и kState_Closed
.
Общественные функции
Прервать
void Abort( void )
Прервать закрытие конечной точки, другими словами, отправить пакеты RST.
Подтверждение получения
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.
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||
Возвращаемые значения |
|
ОтключитьKeepAlive
INET_ERROR DisableKeepAlive( void )
Отключите опцию TCP «поддерживать активность».
TCPEndPoint::DisableKeepAlive .
Отключите проверки активности TCP в соответствующем TCP-соединении.
Подробности | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Возвращаемые значения |
|
Примечание. Этот метод можно вызвать только тогда, когда конечная точка находится в одном из подключенных состояний. Этот метод ничего не делает, если на конечной точке не включены проверки активности.
Отключить получение
void DisableReceive( void )
Отключить прием.
Отключите все обработчики событий. Данные, отправленные в конечную точку, которая отключает прием, будут подтверждаться до тех пор, пока не будет исчерпано окно приема.
ВключитьKeepAlive
INET_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
Включите опцию TCP «поддерживать активность».
TCPEndPoint::EnableKeepAlive .
Начать автоматическую передачу сегментов проверки активности TCP каждые interval
секунд. Соединение будет автоматически прервано после получения отрицательного ответа или после отправки тестовых сегментов timeoutCount
без получения положительного ответа.
Подробности | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||||
Возвращаемые значения |
|
Подробности спецификации см. в RFC 1122, раздел 4.2.3.6.
Включите проверки активности TCP для соответствующего TCP-соединения.
Примечание. Этот метод можно вызвать только тогда, когда конечная точка находится в одном из подключенных состояний. Этот метод можно вызывать несколько раз, чтобы настроить интервал поддержки активности или счетчик времени ожидания.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
EnableNoDelay
INET_ERROR EnableNoDelay( void )
ВключитьNoDelay.
Отключите алгоритм буферизации Nagle в TCP, установив параметры сокета TCP_NODELAY.
Включитьполучение
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
для любого аргумента.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
IsConnected
bool IsConnected( void ) const
Извлеките, установлено ли TCP-соединение.
Слушать
INET_ERROR Listen( uint16_t backlog )
Подготовьте конечную точку для приема TCP-сообщений.
Если State
уже kState_Listening
, то никакая операция не выполняется, в противном случае State
устанавливается на kState_Listening
, и конечная точка готовится к получению TCP-сообщений в соответствии с семантикой платформы.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возвращаемые значения |
|
На некоторых платформах аргумент backlog
не используется (глубина очереди фиксирована, одновременно может быть принято только одно соединение).
В системах LwIP этот метод нельзя вызывать с уже полученной блокировкой стека LwIP.
Логид
uint16_t LogId( void )
Получите идентификатор конечной точки.
Подробности | |
---|---|
Возврат | Возвращает непрозрачный уникальный идентификатор для журналов использования. |
МаркАктив
void MarkActive( void )
Другими словами, обратите внимание на активность, сброс таймера простоя.
Сбросьте таймер простоя на ноль.
Ожидание получения длины
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
независимо от того, была ли передача успешной или неудачной.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возвращаемые значения |
|
Сетконнекттаймаут
void SetConnectTimeout( const uint32_t connTimeoutMsecs )
Установите тайм-аут для успешного подключения Connect или возврата ошибки.
Подробности | |||
---|---|---|---|
Параметры |
|
SetUserTimeout
INET_ERROR SetUserTimeout( uint32_t userTimeoutMillis )
Установите параметр сокета TCP TCP_USER_TIMEOUT.
Когда значение больше 0, оно определяет максимальное время в миллисекундах, в течение которого переданные данные могут оставаться неподтвержденными, прежде чем TCP принудительно закроет соответствующее соединение. Если значение параметра указано как 0, TCP будет использовать системное значение по умолчанию. Дополнительную информацию см. в RFC 5482.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
Установите параметр сокета таймаута пользователя TCP.
Когда значение больше 0, оно определяет максимальное время в миллисекундах, в течение которого переданные данные могут оставаться неподтвержденными, прежде чем TCP принудительно закроет соответствующее соединение. Если значение параметра указано как 0, TCP будет использовать системное значение по умолчанию. Дополнительную информацию см. в RFC 5482.
Примечание. Этот метод можно вызвать только тогда, когда конечная точка находится в одном из подключенных состояний. Этот метод можно вызывать несколько раз, чтобы настроить интервал поддержки активности или счетчик времени ожидания.
Неисправность
INET_ERROR Shutdown( void )
Инициация TCP наполовину закрыта, другими словами, завершена отправка.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Возвращаемые значения |
|