Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

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
}
列挙型
この列挙は、受信接続アクションを定義します。

Typedef

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
この構造には、otTcpEndpointInitialize() 関数への引数が含まれています。
otTcpEstablished)(otTcpEndpoint *aEndpoint) typedef
void(*
このコールバックは、TCP 3-way handshake が完了し、接続が確立されたことをアプリケーションに通知します。
otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog) typedef
void(*
このコールバックは、送信バッファから受信者へのデータ転送が進行した場合に、アプリケーションに通知します。
otTcpIncomingConnectionAction typedef
この列挙は、受信接続アクションを定義します。
otTcpListener typedef
struct otTcpListener
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 とそこに含まれるデータがアプリケーションによって回収される可能性があることをアプリケーションに通知します。

Functions

otTcpAbort(otTcpEndpoint *aEndpoint)
この TCP エンドポイントに関連付けられた TCP 接続を強制終了します。
otTcpBind(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName)
TCP エンドポイントを IP アドレスとポートにバインドします。
otTcpCommitReceive(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
アプリケーションが受信バッファの開始時に aNumBytes バイトのデータの処理を完了したこと、および TCP スタックが受信バッファ内でこれらのバイトを維持する必要がないことを TCP スタックに通知します。
otTcpConnect(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags)
この接続のリモートホストとポートを記録します。
otTcpEndpointDeinitialize(otTcpEndpoint *aEndpoint)
この TCP エンドポイントを初期化します。
otTcpEndpointGetContext(otTcpEndpoint *aEndpoint)
void *
初期化時に aEndpoint に関連付けられたコンテキスト ポインタを取得します。
otTcpEndpointGetInstance(otTcpEndpoint *aEndpoint)
初期化時に aEndpoint に関連付けられていた otInstance を取得します。
otTcpEndpointInitialize(otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs)
TCP エンドポイントを初期化します。
otTcpGetLocalAddress(const otTcpEndpoint *aEndpoint)
const otSockAddr *
TCP エンドポイントのローカルホストとポートへのポインタを取得します。
otTcpGetPeerAddress(const otTcpEndpoint *aEndpoint)
const otSockAddr *
TCP エンドポイントのピアとポートへのポインタを取得します。
otTcpListen(otTcpListener *aListener, const otSockAddr *aSockName)
指定された IP アドレスとポートに一致する受信 TCP 接続を、この TCP リスナーのコールバックをトリガーします。
otTcpListenerDeinitialize(otTcpListener *aListener)
この TCP リスナーを初期化します。
otTcpListenerGetContext(otTcpListener *aListener)
void *
初期化時に aListener に関連付けられたコンテキスト ポインタを取得します。
otTcpListenerGetInstance(otTcpListener *aListener)
初期化時に aListener に関連付けられていた otInstance を取得します。
otTcpListenerInitialize(otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs)
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

この構造は TCP エンドポイントを表します。

otTcpEndpointInitializeArgs

この構造には、otTcpEndpointInitialize() 関数への引数が含まれています。

otTcpListener

この構造は TCP リスナーを表します。

otTcpListenerInitializeArgs

この構造には otTcpListenerInitialize() 関数に対する引数が含まれています。

列挙型

匿名の列挙型

 anonymous enum

この列挙型は、otTcpConnect() に渡されるフラグを定義します。

匿名の列挙型

 anonymous enum

この列挙は、otTcpSendByReference に渡されるフラグを定義します。

otTcpDisconnectedReason

 otTcpDisconnectedReason

otTcpIncomingConnectionAction

 otTcpIncomingConnectionAction

この列挙は、受信接続アクションを定義します。

これは otTcpAcceptReady() のコールバックで使用されます。

Properties
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT

受信接続を承認します。

OT_TCP_INCOMING_CONNECTION_ACTION_DEFER

受信接続を遅延(暗黙的に無視)します。

OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE

受信接続を拒否する。

Typedef

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 接続の handshake が実際に完了する前である可能性があります。アプリケーションには、接続を受け入れた TCP リスナーと接続先の TCP エンドポイントの両方のコンテキスト ポインタが提供されます。指定されたコンテキストは、TCP リスナーに関連付けられたコンテキストです。

詳細
パラメータ
[in] aListener
受信接続に一致する TCP リスナー。
[in] aEndpoint
受信接続が承認された TCP エンドポイント。
[in] aPeer
受信接続元のホストとポート。

otTcpAcceptReady の使用

otTcpIncomingConnectionAction(* otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)

このコールバックは、この TCP リスナーに一致する受信接続が到着したことを示します。

通常、アプリケーションは受信方向の接続を受け入れます。これを行うには、aAcceptInto に、受信接続の受け入れ先となる otTcpEndpoint へのポインタを入力します。この otTcpEndpointotTcpEndpointInitialize() により初期化されている必要があります。その後、アプリケーションが OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT を返します。

受信接続を受け入れることを拒否することもできます。これを行うには、2 つの方法があります。まず、アプリケーションが OT_TCP_INCOMING_CONNECTION_ACTION_DEFER を返した場合、OpenThread は接続確立リクエストを暗黙的に無視します。接続ピアはリクエストを再送信する可能性があり、この時点でコールバックが再度呼び出されます。これは、現在リソースが接続の受け入れに使用できない場合に有用ですが、接続ピアが接続の確立の再送信を行うと利用できる可能性があります。次に、アプリケーションが OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE を返した場合、OpenThread は接続を確立しようとしたホストに「接続が拒否されました」というメッセージを送信します。アプリケーションが受信接続を拒否した場合、aAcceptInto にデータを入力する必要はありません。

詳細
パラメータ
[in] aListener
受信接続に一致する TCP リスナー。
[in] aPeer
受信接続元のホストとポート。
[out] aAcceptInto
受信接続を受け入れる TCP エンドポイント。
戻り値
受信接続を処理する方法の説明

otTcpDisconnected

void(* otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)

このコールバックは、接続が切断されて使用できなくなったか、接続が TIME-WAIT 状態になったことを示します。

接続の確立の試行(otTcpConnect() の呼び出しによる)またはその後の任意の時点(接続がタイムアウトした場合、または接続ピアから RST セグメントが受信された場合)に発生する可能性があります。このコールバックが発生すると、アプリケーションがこの接続のために提供したすべてのリソース(つまり、TCP エンドポイント自体や受信バッファのスペースではない otLinkedBuffers とメモリが参照します)を再利用できます。接続が TIME-WAIT 状態の場合、このコールバックは 2 回呼び出されます。1 つは TIME-WAIT 状態に入るとき(OT_TCP_DISCONNECTED_REASON_TIME_WAIT のとき)で、もう 1 回は TIME-WAIT 状態の有効期限が切れたとき(OT_TCP_DISCONNECTED_REASON_NORMAL のとき)に呼び出されます。

詳細
パラメータ
[in] aEndpoint
接続が失われた TCP エンドポイント。
[in] aReason
接続が失われた理由。

otTcpDisconnectedReason

enum otTcpDisconnectedReason otTcpDisconnectedReason

otTcpEndpoint

struct otTcpEndpoint otTcpEndpoint

otTcpEndpointInitializeArgs

struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs

この構造には、otTcpEndpointInitialize() 関数への引数が含まれています。

otTcpEstablished

void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)

このコールバックは、TCP 3-way handshake が完了し、接続が確立されたことをアプリケーションに通知します。

詳細
パラメータ
[in] aEndpoint
接続が確立された TCP エンドポイント。

otTcpForwardProgress

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

このコールバックは、送信バッファから受信者へのデータ転送が進行した場合に、アプリケーションに通知します。

このコールバックは、TCP を正しく操作するためには必要ありません。ほとんどのアプリケーションは、TCP スタックの使用が終了した後、otTcpSendDone() コールバックを使用してリンクされたバッファを再利用できます。このコールバックの目的は、接続ピアによる接続ピアへのデータ転送の進行状況についての詳細な情報を得ることが可能な高度なアプリケーションをサポートすることです。

このコールバックのオペレーションは、TCP の送信バッファと密接に関連しています。送信バッファは 2 つの領域を持つものと理解できます。まず、送信バッファの先頭(前面)に「処理中」のリージョンがあります。これは、受信者に送信されたものの、まだ確認されていないデータに対応しています。第 2 のリージョンは「バックログ」です。これは、「処理中」のリージョンにない送信バッファ内のすべてのデータで構成されます。「バックログ」領域は、送信キューに入っているが、まだ送信されていないデータに対応しています。

このコールバックは、2 種類のイベントに応じて呼び出されます。まず、送信バッファの「処理中」の領域が縮小される可能性があります(たとえば、前に送信したデータを受信者が確認したときなど)。次に、送信バッファの「バックログ」領域が縮小される可能性があります(たとえば、新しいデータが送信されました)。接続ピアからの ACK セグメントに応じて、これらの 2 つの条件が同時に発生し、それが 1 つのコールバックで結合される理由です。

TCP スタックは、送信バッファの末尾にある aInSendBuffer バイトのみを使用します。aInSendBuffer が x だけ減少した場合、以前は送信バッファの先頭だった x バイトが送信バッファの一部ではなくなり、アプリケーションによって再利用(すなわち上書き)できるようになります。otLinkedBuffer 構造自体は、参照するすべてのバイトが送信バッファに含まれなくなるまで再利用できます。

このコールバックは、次の意味で otTcpSendDone() を前提としています。aInSendBuffer と、各リンクバッファ内のバイト数を比較することで、リンクされたバッファを再利用できるタイミングを判断できます。ただし、再利用できる otLinkedBuffers を直接伝達する otTcpSendDone() を使用すると、はるかに簡単に使用できます。両方のコールバックが登録され、同じイベント(例: 同じ ACK セグメントを受け取った)によってトリガーされた場合、otTcpSendDone() コールバックが最初にトリガーされ、その後このコールバックがトリガーされます。

また、このコールバックは aBacklog を提供します。これは、送信バッファ内にまだバイト単位のデータがないことを示します。データが送信後すぐに届くことが保証されている場合にのみ、送信バッファにデータを追加するアプリケーションでは、aBacklog が適切に小さい(0 または 0 に近い)場合にのみデータを送信することが望ましい場合があります。たとえば、アプリケーションで aBacklog を使用すると、データのバックログが作成されないように、データをドロップまたは集約してキューアップに反応できます。

正のバイト数で otTcpSendByReference() または otTcpSendByExtension() を呼び出した後、otTcpForwardProgress() コールバックが呼び出され、送信バッファに追加されたバイトが送信されるタイミングを示します。otTcpForwardProgress() の呼び出しは、送信バッファにバイトが追加された直後(これらのバイトの一部が直ちに送信され、バックログを削減する場合)、または将来的に(接続がデータの一部またはすべてを送信した後でバックログを削減する場合)になることがあります。「すぐに」という意味では、コールバックはタスクレットでの実行が直ちにスケジュールされることを意味します。リエンタント関連の複雑さを回避するため、otTcpForwardByReference() 関数または otTcpSendByExtension() 関数から otTcpForwardProgress() コールバックが直接呼び出されることはありません。

詳細
パラメータ
[in] aEndpoint
接続の TCP エンドポイント。
[in] aInSendBuffer
送信バッファのバイト数(「処理中」と「バックログ」領域の合計)。
[in] aBacklog
送信用にキューイングされているものの、まだ送信されていないバイト数(「バックログ」リージョン)。

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 は true になります。最後に、aBytesRemaining は受信する追加のデータを保持するために受信バッファに残っている容量を示します。

詳細
パラメータ
[in] aEndpoint
接続の TCP エンドポイント。
[in] aBytesAvailable
接続の受信バッファのバイト数。
[in] aEndOfStream
接続の受信バッファにありながら、追加データを受信できるかどうかを示します。
[in] aBytesRemaining
受信バッファがいっぱいになる前に受信できる追加バイト数。

otTcpSendDone

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

このコールバックは、指定された aData 内のデータが接続ピアによって確認され、aData とそこに含まれるデータがアプリケーションによって回収される可能性があることをアプリケーションに通知します。

aData は、otTcpSendByReference() を通じて TCP に渡されるものと同一であることを保証します。これには、otTcpSendByExtension() を通じて適用される拡張機能も含まれます。

詳細
パラメータ
[in] aEndpoint
接続の TCP エンドポイント。
[in] aData
回収可能な otLinkedBuffer へのポインタ。

Functions

otTcpAbort

otError otTcpAbort(
  otTcpEndpoint *aEndpoint
)

この TCP エンドポイントに関連付けられた TCP 接続を強制終了します。

これにより、TCP エンドポイントは別の接続ですぐに使用できるようになります。また、送信バッファと受信バッファは空になり、アプリケーションによって提供されたデータのオーナー権限は otTcpSendByReference()otTcpSendByExtension() でアプリケーションにコールバックされます。受信バッファの 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
)

アプリケーションが受信バッファの開始時に aNumBytes バイトのデータの処理を完了したこと、および TCP スタックが受信バッファ内でこれらのバイトを維持する必要がないことを 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 接続の確立の handshake は otTcpSendByReference() の最初の呼び出しでのみ行われるということです。aFlags を使用して TCP Fast Open を明示的に無効にすることができます。この場合、TCP 接続の確立の handshake は直ちに開始されます。

詳細
パラメータ
[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
)

初期化時に aEndpoint に関連付けられていた otInstance を取得します。

詳細
パラメータ
[in] aEndpoint
インスタンスを取得する TCP エンドポイント。
戻り値
aEndpoint に関連付けられた otInstance ポインタ。

otTcpEndpointInitialize

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

TCP エンドポイントを初期化します。

この関数を呼び出すと、OpenThread は TCP エンドポイントを追跡し、aEndpoint 内で TCP データを保存および取得します。アプリケーションは、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
)

指定された IP アドレスとポートに一致する受信 TCP 接続を、この 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
)

初期化時に aListener に関連付けられていた otInstance を取得します。

詳細
パラメータ
[in] aListener
インスタンスを取得する TCP リスナー。
戻り値
aListener に関連付けられた otInstance ポインタ。

otTcpListenerInitialize

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

TCP リスナーを初期化します。

この関数を呼び出すと、OpenThread は TCP リスナーをトラッキングし、aListener 内で TCP データを保存および取得します。アプリケーションは、aListener のフィールドに直接アクセスまたは変更しないようにしてください。アプリが aListener を支えるメモリを再利用する必要がある場合は、otTcpListenerDeInitialize() を呼び出す必要があります。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aListener
TCP リスナー構造へのポインタ。
[in] aArgs
引数の構造へのポインタ。
戻り値
OT_ERROR_NONE
TCP リスナーを開きました。
OT_ERROR_FAILED
TCP リスナーを開けませんでした。

otTcpReceiveByReference

otError otTcpReceiveByReference(
  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 を呼び出すことで取得した、リンクされたバッファ チェーンを走査するだけで済みます。アプリケーションによっては、この関数を呼び出してデータ処理を簡略化するために受信バッファを連続させると、CPU で受信バッファ内のデータを再編成するのに時間がかかります。

詳細
パラメータ
[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 スタックになります。これらのオブジェクトの所有権がアプリケーションに返されるまでは、アプリケーションによって変更されないようにする必要があります。この関数を呼び出す前の呼び出しの「送信完了」コールバックがまだ呼び出されていない場合でも、この関数を呼び出して別のリンクバッファを送信キューに追加できます。

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_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 は、otTcpEndpoint の mTcb フィールドが TCPlp の構造体 tcpcb と同じサイズになるように選択されます。

この処理は必要です。mTcb フィールドは宣言では不透明ですが、TCP 実装では tcpcb 構造体として扱われます。

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 は、otTcpListener の mTcbListener フィールドが TCPlp の構造体 tcpcb_listen と同じサイズになるように選択されます。

この処理は必要です。mTcbListen フィールドは宣言では不透明ですが、TCP 実装では構造体 tcpcb として扱われるためです。

OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2599

約 3 つのワイヤレス ホップ以下の TCP 接続の推奨バッファサイズ。

メモリが特に制限されているプラットフォームや、高帯域幅を必要としない状況では、小さいバッファサイズを手動で選択することをおすすめします。

OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4158

多数のワイヤレス ホップを通過する TCP 接続の推奨バッファサイズ。

TCP 接続が非常に多くのホップ(6 以上)を経由する場合は、手動で大きなバッファサイズを選択することをおすすめします。

リソース

OpenThread API リファレンスのトピックは、GitHub で入手可能なソースコードから作成されています。詳細やドキュメントについては、リソースをご覧ください。