TCP

Этот модуль включает функции, управляющие TCP-связью.

Резюме

Перечисления

anonymous enum перечислить
Это перечисление определяет флаги , передаваемые otTcpConnect () .
anonymous enum перечислить
Это перечисление определяет флаги , передаваемые otTcpSendByReference .
otTcpDisconnectedReason перечислить
otTcpIncomingConnectionAction {
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT ,
OT_TCP_INCOMING_CONNECTION_ACTION_DEFER ,
OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE
}
перечислить
Это перечисление определяет действия входящего соединения.

Typedefs

otLinkedBuffer typedef
Связанная буферная структура для использования с TCP.
otTcpAcceptDone )(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer) typedef
void(*
Этот обратный вызов указывает, что TCP-соединение теперь готово для двусторонней связи.
otTcpAcceptReady )(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto) typedef
Этот обратный вызов указывает, что пришло входящее соединение, соответствующее этому прослушивателю TCP.
otTcpBytesAcked )(otTcpEndpoint *aEndpoint, size_t aNumBytes) typedef
void(*
Обратный вызов информирует приложение , что первые aNumBytes в буфер отправки которые были подтверждены в связи сверстников и их основной памяти может быть утилизирован приложением.
otTcpDisconnected )(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason) typedef
void(*
Этот обратный вызов указывает, что соединение было прервано и больше не должно использоваться, или что соединение перешло в состояние TIME-WAIT.
otTcpDisconnectedReason typedef
enum otTcpDisconnectedReason
otTcpEndpoint typedef
otTcpEndpointInitializeArgs typedef
Эта структура содержит аргументы otTcpEndpointInitialize () функции.
otTcpEstablished )(otTcpEndpoint *aEndpoint) typedef
void(*
Этот обратный вызов сообщает приложению, что трехстороннее квитирование TCP завершено и соединение установлено.
otTcpIncomingConnectionAction typedef
Это перечисление определяет действия входящего соединения.
otTcpListener typedef
otTcpListenerInitializeArgs typedef
Эта структура содержит аргументы otTcpListenerInitialize () функции.
otTcpReceiveAvailable )(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining) typedef
void(*
Этот обратный вызов указывает количество байтов, доступных для потребления из буфера приема.
otTcpSendDone )(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData) typedef
void(*
Обратный вызов информирует приложение , что данные в предоставленных aData были признаны в связи пэра и aData и содержащиеся в нем данные могут быть возвращены приложением.
otTcpSendReady )(otTcpEndpoint *aEndpoint) typedef
void(*
Этот обратный вызов информирует приложение о том, что если данные добавляются в буфер отправки, некоторые из них будут переданы немедленно без задержки, в отличие от постановки в очередь для передачи после того, как одноранговый узел подтвердит некоторые данные.

Функции

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, 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)
Получает otInstance , что было связано с aListener при инициализации.
otTcpListenerInitialize ( otInstance *aInstance, otTcpListener *aListener, otTcpListenerInitializeArgs *aArgs)
Инициализирует прослушиватель TCP.
otTcpReceiveByReference (const 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

Эта структура представляет конечную точку TCP.

otTcpEndpointInitializeArgs

Эта структура содержит аргументы otTcpEndpointInitialize () функции.

otTcpListener

Эта структура представляет слушателя TCP.

otTcpListenerInitializeArgs

Эта структура содержит аргументы otTcpListenerInitialize () функции.

Перечисления

анонимное перечисление

 anonymous enum

Это перечисление определяет флаги , передаваемые otTcpConnect () .

анонимное перечисление

 anonymous enum

Это перечисление определяет флаги , передаваемые otTcpSendByReference .

otTcpDisconnectedReason

 otTcpDisconnectedReason

otTcpIncomingConnectionAction

 otTcpIncomingConnectionAction

Это перечисление определяет действия входящего соединения.

Это используется в otTcpAcceptReady () обратного вызова.

Характеристики
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT

Примите входящее соединение.

OT_TCP_INCOMING_CONNECTION_ACTION_DEFER

Отложить (игнорировать) входящее соединение.

OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE

Отказаться от входящего соединения.

Typedefs

otLinkedBuffer

struct otLinkedBuffer otLinkedBuffer

Связанная буферная структура для использования с TCP.

Одна otLinkedBuffer структура ссылается на массив байтов в памяти, с помощью mData и mLength. Поле mNext используется для формирования цепочки otLinkedBuffer структур.

otTcpAcceptDone

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

Этот обратный вызов указывает, что TCP-соединение теперь готово для двусторонней связи.

В случае TCP Fast Open это может произойти до фактического завершения установления связи TCP. Приложению предоставляются указатели контекста как для прослушивателя 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 уже должен быть инициализирован с помощью otTcpEndpointInitialize () . Затем приложение возвращает OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT.

В качестве альтернативы приложение может отказаться принимать входящее соединение. Приложение может сделать это двумя способами. Во-первых, если приложение возвращает OT_TCP_INCOMING_CONNECTION_ACTION_DEFER, то OpenThread молча игнорирует запрос на установление соединения; одноранговый узел, скорее всего, повторно передаст запрос, после чего обратный вызов будет вызван снова. Это полезно, если в настоящее время ресурсы для принятия соединения недоступны, но они могут быть доступны, когда одноранговый узел повторно передает свою попытку установления соединения. Во-вторых, если приложение возвращает OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE, то OpenThread отправляет сообщение «соединение отклонено» хосту, который пытался установить соединение. Если приложение отклоняет входящее соединение, не требуется , чтобы заполнить aAcceptInto .

Подробности
Параметры
[in] aListener
Прослушиватель TCP, соответствующий входящему соединению.
[in] aPeer
Хост и порт, с которого исходит входящее соединение.
[out] aAcceptInto
Конечная точка TCP, в которую будет приниматься входящее соединение.
Возврат
Описание того, как обрабатывать входящее соединение.

otTcpBytesAcked

void(* otTcpBytesAcked)(otTcpEndpoint *aEndpoint, size_t aNumBytes)

Обратный вызов информирует приложение , что первые aNumBytes в буфер отправки которые были подтверждены в связи сверстников и их основной памяти может быть утилизирован приложением.

Этот обратный вызов не требуется для правильной работы TCP. Большинство приложений может полагаться только на otTcpSendDone () обратного вызова. Если приложению требуется детальная обратная связь по мере того, как память в буфере отправки снова становится доступной (вместо того, чтобы ждать, пока станут доступны данные всего связанного буфера), или какое-либо указание на то, идет ли соединение вперед, оно может зарегистрировать этот обратный вызов .

Подробности
Параметры
[in] aEndpoint
Конечная точка TCP для подключения.
[in] aNumBytes
Количество байтов, вновь подтвержденных партнером соединения.

otTcpDisconnected

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_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NORM_NECTED_REASONECTED) снова к истечению срока действия по истечении срока действия состояния TIME-WAIT).

Подробности
Параметры
[in] aEndpoint
Конечная точка TCP, соединение с которой было потеряно.
[in] aReason
Причина потери связи.

otTcpDisconnectedReason

enum otTcpDisconnectedReason otTcpDisconnectedReason

otTcpEndpoint

struct otTcpEndpoint otTcpEndpoint

otTcpEndpointInitializeArgs

struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs

Эта структура содержит аргументы otTcpEndpointInitialize () функции.

otTcpEstablished

void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)

Этот обратный вызов сообщает приложению, что трехстороннее квитирование TCP завершено и соединение установлено.

Подробности
Параметры
[in] aEndpoint
Конечная точка TCP, соединение с которой установлено.

otTcpIncomingConnectionAction

enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction

Это перечисление определяет действия входящего соединения.

Это используется в otTcpAcceptReady () обратного вызова.

otTcpListener

struct otTcpListener otTcpListener

otTcpListenerInitializeArgs

struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs

Эта структура содержит аргументы otTcpListenerInitialize () функции.

otTcpReceiveAvailable

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

Этот обратный вызов указывает количество байтов, доступных для потребления из буфера приема.

Он вызывается всякий раз, когда байты добавляются в приемный буфер и когда достигается конец потока. Если конец потока достигнут (т.е. если нет больше данных не будут доступны для чтения , так как соединение сверстники закрыли свой конец соединения для записи), то aEndOfStream верно. Наконец, 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 , которые могут быть восстановлены.

otTcpSendReady

void(* otTcpSendReady)(otTcpEndpoint *aEndpoint)

Этот обратный вызов информирует приложение о том, что если данные добавляются в буфер отправки, некоторые из них будут переданы немедленно, без задержки, в отличие от постановки в очередь для передачи после того, как одноранговый узел подтвердит некоторые данные.

После вызова otTcpSendByReference () или otTcpSendByExtension () , тем otTcpSendReady () обратного вызова гарантированно будет называться либо сразу (если соединение уже готово) или когда - нибудь в будущем (после того , как соединение будет готово для получения дополнительной информации).

Этот обратный вызов не требуется для правильной работы TCP. Если в буфер отправки добавлено больше данных, чем может быть передано без задержки, они просто будут поставлены в очередь для передачи в более позднее время. Этот обратный вызов следует использовать только в тех случаях, когда требуется некоторая гарантия того, что данные, добавленные в буфер отправки, будут отправлены в ближайшее время (например, TCP не будет ждать, пока получатель сначала подтвердит подтверждение некоторых других данных, прежде чем отправлять эти данные). Например, вы можете использовать этот обратный вызов, если вы предпочитаете, чтобы ваши данные были отброшены, а не создавали накопление данных в буфере отправки. Но для большинства приложений, где это не вызывает беспокойства, ожидается, что этот обратный вызов вообще не будет использовать.

Подробности
Параметры
[in] aEndpoint
Конечная точка TCP для подключения.

Функции

otTcpAbort

otError otTcpAbort(
  otTcpEndpoint *aEndpoint
)

Принудительно завершает TCP-соединение, связанное с этой конечной точкой TCP.

Это сразу делает TCP конечной точки бесплатно для использования в другой связи и опустошает отправки и получения буферов передачи права собственности каких - либо данных , предоставляемых приложением в otTcpSendByReference () вызывает обратно в приложение. Обратные вызовы конечной точки TCP и память для буфера приема остаются связанными с конечной точкой TCP.

Подробности
Параметры
[in] aEndpoint
Указатель на структуру конечной точки TCP, представляющую конечную точку TCP, которую необходимо прервать.
Возвращаемые значения
OT_ERROR_NONE
Успешно прервано соединение конечной точки TCP.
OT_ERROR_FAILED
Не удалось прервать соединение конечной точки TCP.

otTcpBind

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

Привязывает конечную точку TCP к IP-адресу и порту.

Подробности
Параметры
[in] aEndpoint
Указатель на структуру конечной точки TCP для привязки.
[in] aSockName
Адрес и порт, к которому нужно привязать эту конечную точку TCP.
Возвращаемые значения
OT_ERROR_NONE
Успешно привязана конечная точка TCP.
OT_ERROR_FAILED
Не удалось привязать конечную точку TCP.

otTcpCommitReceive

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 Fast Open. Это означает , что эта функция просто записывает удаленный хост и порт, а также о том , что установление соединения TCP рукопожатие происходит только на первый вызов otTcpSendByReference () . TCP Fast Open можно явно отключить с помощью aFlags , в этом случае установление соединения TCP рукопожатия немедленно инициализируется.

Подробности
Параметры
[in] aEndpoint
Указатель на структуру конечной точки TCP для подключения.
[in] aSockName
IP-адрес и порт хоста, к которому нужно подключиться.
[in] aFlags
Флаги, определяющие параметры этой операции (см. Перечисление выше).
Возвращаемые значения
OT_ERROR_NONE
Успешно завершил операцию.
OT_ERROR_FAILED
Не удалось завершить операцию.

otTcpEndpointDeinitialize

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 .

otTcpEndpointInitialize

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

Инициализирует конечную точку TCP.

Вызов этой функции приводит к OpenThread , чтобы отслеживать TCP конечной точки и хранения и извлечения данных TCP внутри aEndpoint . Заявление должно воздерживаться от прямого доступа или изменения полей в aEndpoint . Если приложению необходимо освободить память резервного aEndpoint , он должен вызвать otTcpEndpointDeinitialize () .

Подробности
Параметры
[in] aInstance
Указатель на экземпляр OpenThread.
[in] aEndpoint
Указатель на структуру конечной точки TCP.
[in] aArgs
Указатель на структуру аргументов.
Возвращаемые значения
OT_ERROR_NONE
Успешно открыта конечная точка TCP.
OT_ERROR_FAILED
Не удалось открыть конечную точку TCP.

otTcpGetLocalAddress

const otSockAddr * otTcpGetLocalAddress(
  const otTcpEndpoint *aEndpoint
)

Получает указатель на локальный хост и порт конечной точки TCP.

Содержимое хоста и порта может быть устаревшим, если этот сокет не находится в подключенном состоянии и не был привязан после последнего отключения.

Подробности
Параметры
[in] aEndpoint
Конечная точка TCP, локальный хост и порт которой нужно получить.
Возврат
Локальный хост и порт aEndpoint .

otTcpGetPeerAddress

const otSockAddr * otTcpGetPeerAddress(
  const otTcpEndpoint *aEndpoint
)

Получает указатель на хост и порт конечной точки TCP.

Содержимое хоста и порта может быть устаревшим, если этот сокет не находится в подключенном состоянии.

Подробности
Параметры
[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.

otTcpListenerDeinitialize

otError otTcpListenerDeinitialize(
  otTcpListener *aListener
)

Деинициализирует этот прослушиватель TCP.

Это означает, что OpenThread больше не отслеживает этого прослушивателя TCP и освобождает все ресурсы, которые он внутренне выделил для этого прослушивателя TCP. Приложение может повторно использовать память, поддерживающую прослушиватель TCP, по своему усмотрению.

Если прослушиватель TCP в настоящее время прослушивает, он перестает слушать.

Подробности
Параметры
[in] aListener
Указатель на деинициализированную структуру прослушивателя TCP.
Возвращаемые значения
OT_ERROR_NONE
Успешно деинициализирован прослушиватель TCP.
OT_ERROR_FAILED
Не удалось деинициализировать прослушиватель TCP.

otTcpListenerGetContext

void * otTcpListenerGetContext(
  otTcpListener *aListener
)

Получает указатель контекста , который был связан с aListener при инициализации.

Подробности
Параметры
[in] aListener
Слушатель TCP, для которого требуется получить контекст.
Возврат
Указатель на контекст , связанный с aListener .

otTcpListenerGetInstance

otInstance * otTcpListenerGetInstance(
  otTcpListener *aListener
)

Получает otInstance , что было связано с aListener при инициализации.

Подробности
Параметры
[in] aListener
Слушатель TCP, экземпляр которого нужно получить.
Возврат
Указатель otInstance связан с aListener .

otTcpListenerInitialize

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

Инициализирует прослушиватель TCP.

Вызов этой функции приводит к OpenThread , чтобы отслеживать TCP слушателя и хранения и извлечения данных TCP внутри aListener . Заявление должно воздерживаться от прямого доступа или изменения полей в aListener . Если приложение должно вернуть подкладочные памяти aListener , он должен вызвать otTcpListenerDeinitialize () .

Подробности
Параметры
[in] aInstance
Указатель на экземпляр OpenThread.
[in] aListener
Указатель на структуру прослушивателя TCP.
[in] aArgs
Указатель на структуру аргументов.
Возвращаемые значения
OT_ERROR_NONE
Успешно открыл прослушиватель TCP.
OT_ERROR_FAILED
Не удалось открыть прослушиватель TCP.

otTcpReceiveByReference

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

Предоставляет приложению связанную цепочку буферов, ссылающуюся на данные, которые в данный момент находятся в приемном буфере TCP.

Связанный буфер цепь действует до «не готов к приему» обратного вызова следующего вызова, или до следующего вызова otTcpReceiveContiguify () или otTcpCommitReceive () .

Подробности
Параметры
[in] aEndpoint
Указатель на структуру конечной точки TCP, представляющую конечную точку TCP, от которой следует получать данные.
[out] aBuffer
Указатель на связанную цепочку буферов, ссылающуюся на данные, которые в данный момент находятся в приемном буфере.
Возвращаемые значения
OT_ERROR_NONE
Успешно завершил операцию.
OT_ERROR_FAILED
Не удалось завершить операцию.

otTcpReceiveContiguify

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; они не должны изменяться приложением до тех пор, пока обратный вызов "send done" не вернет право собственности на эти объекты приложению. Допускается вызывать эту функцию для добавления еще одного связанного буфера в очередь отправки, даже если обратный вызов «send done» для предыдущего вызова этой функции еще не запущен.

Обратите внимание , что aBuffer не должны быть прикованы; его поле mNext должно быть NULL. Если дополнительные данные будут добавлены сразу после этого вызова, тогда следует использовать флаг OT_TCP_SEND_MORE_TO_COME в качестве подсказки для реализации TCP.

Подробности
Параметры
[in] aEndpoint
Указатель на структуру конечной точки TCP, представляющую конечную точку TCP, по которой следует отправлять данные.
[in] aBuffer
Указатель на связанную цепочку буферов, ссылающийся на данные, которые нужно добавить в буфер отправки.
[in] aFlags
Флаги, определяющие параметры этой операции (см. Перечисление выше).
Возвращаемые значения
OT_ERROR_NONE
Данные в буфер отправки успешно добавлены.
OT_ERROR_FAILED
Не удалось добавить данные в буфер отправки.

otTcpSendEndOfStream

otError otTcpSendEndOfStream(
  otTcpEndpoint *aEndpoint
)

Сообщает одноранговому узлу соединения, что эта конечная точка TCP не будет отправлять больше данных.

Это следует использовать, когда у приложения больше нет данных для отправки одноранговому соединению. Для этого соединения будущие чтения на одноранговом узле соединения приведут к условию «конец потока», и будущая запись в этой конечной точке соединения завершится ошибкой.

Условие «конца потока» применяется только после того, как одноранговый узел соединения получил какие-либо данные, ранее предоставленные стеку TCP для отправки.

Подробности
Параметры
[in] aEndpoint
Указатель на структуру конечной точки TCP, представляющую конечную точку TCP, которую необходимо завершить.
Возвращаемые значения
OT_ERROR_NONE
Успешно поставлено в очередь условие «конец потока» для передачи.
OT_ERROR_FAILED
Не удалось поставить в очередь условие «конец потока» для передачи.

otTcpStopListening

otError otTcpStopListening(
  otTcpListener *aListener
)

Заставляет этот прослушиватель TCP прекратить прослушивание входящих подключений.

Подробности
Параметры
[in] aListener
Указатель на структуру прослушивателя TCP, который должен прекратить прослушивание.
Возвращаемые значения
OT_ERROR_NONE
Успешно прекращено прослушивание прослушивателя TCP.
OT_ERROR_FAILED
Не удалось остановить прослушивание прослушивателя TCP.

Макросы

OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2599

Рекомендуемый размер буфера для TCP-соединений, которые проходят около 3 беспроводных переходов или меньше.

На платформах, где память особенно ограничена и в ситуациях, когда высокая пропускная способность не требуется, может быть желательно вручную выбрать меньший размер буфера.

OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4158

Рекомендуемый размер буфера для TCP-соединений, которые проходят через множество беспроводных переходов.

Если TCP-соединение проходит через очень большое количество переходов (более 6 или около того), тогда может быть целесообразно выбрать большой размер буфера вручную.