Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기
컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

TCP

이 모듈에는 TCP 통신을 제어하는 함수가 포함되어 있습니다.

요약

열거

anonymous enum enum
이 열거형은 otTcpConnect()에 전달되는 플래그를 정의합니다.
anonymous enum enum
이 열거형은 otTcpSendByReference에 전달된 플래그를 정의합니다.
otTcpDisconnectedReason enum
otTcpIncomingConnectionAction{
  OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT,
  OT_TCP_INCOMING_CONNECTION_ACTION_DEFER,
  OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE
}
enum
이 열거형은 수신 연결 작업을 정의합니다.

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방향 핸드셰이크가 완료되고 연결이 설정되었음을 애플리케이션에 알립니다.
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와 포함된 데이터를 애플리케이션에서 회수할 수 있음을 애플리케이션에 알립니다.

함수

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() 함수에 대한 인수가 포함됩니다.

열거형

익명 enum

 anonymous enum

이 열거형은 otTcpConnect()에 전달되는 플래그를 정의합니다.

익명 enum

 anonymous enum

이 열거형은 otTcpSendByReference에 전달된 플래그를 정의합니다.

otTcpDisconnectedReason

 otTcpDisconnectedReason

OTTcpReceivedConnectionAction

 otTcpIncomingConnectionAction

이 열거형은 수신 연결 작업을 정의합니다.

otTcpAcceptReady() 콜백에서 사용됩니다.

속성
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT

수신 연결을 수락합니다.

OT_TCP_INCOMING_CONNECTION_ACTION_DEFER

수신 연결을 지연 (자동 무시)합니다.

OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE

수신 연결을 거부합니다.

Typedef

OTP

struct otLinkedBuffer otLinkedBuffer

TCP와 함께 사용할 연결된 버퍼 구조.

단일 otLinkedBuffer 구조는 mData 및 mLength를 통해 메모리의 바이트 배열을 참조합니다. mNext 필드는 otLinkedBuffer 구조 체인을 형성하는 데 사용됩니다.

OTTcpAcceptDone

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

이 콜백은 이제 TCP 연결이 양방향 통신을 할 수 있음을 나타냅니다.

TCP 빠른 열기의 경우 이는 TCP 연결 핸드셰이크가 실제로 완료되기 전에 있을 수 있습니다. 애플리케이션에 연결을 수락한 TCP 리스너와 수락된 TCP 엔드포인트의 컨텍스트 포인터가 모두 제공됩니다. 제공된 컨텍스트는 TCP 리스너와 연결된 컨텍스트입니다.

세부정보
매개변수
[in] aListener
수신 연결과 일치하는 TCP 리스너입니다.
[in] aEndpoint
수신 연결이 수락된 TCP 엔드포인트입니다.
[in] aPeer
수신 연결이 발생한 호스트와 포트입니다.

OTTcpAcceptReady

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

이 콜백은 이 TCP 리스너와 일치하는 수신 연결이 도착했음을 나타냅니다.

일반적인 응답은 애플리케이션이 수신 연결을 수락하는 것입니다. 이렇게 하려면 수신 연결을 수락할 otTcpEndpoint 포인터로 aAcceptInto를 채웁니다. 이 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 엔드포인트입니다.
반환
수신 연결을 처리하는 방법에 관한 설명

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_NORMAL 사용)될 때 두 번 호출됩니다.

세부정보
매개변수
[in] aEndpoint
연결이 끊긴 TCP 엔드포인트
[in] aReason
연결이 끊긴 이유

otTcpDisconnectedReason

enum otTcpDisconnectedReason otTcpDisconnectedReason

otTcpEndpoint

struct otTcpEndpoint otTcpEndpoint

otTcpEndpointInitializeArgs

struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs

이 구조에는 otTcpEndpointInitialize() 함수에 대한 인수가 포함됩니다.

OTTcpSeted

void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)

이 콜백은 TCP 3방향 핸드셰이크가 완료되고 연결이 설정되었음을 애플리케이션에 알립니다.

세부정보
매개변수
[in] aEndpoint
연결이 설정된 TCP 엔드포인트입니다.

OTTcpForwardProgress

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

이 콜백은 전송 버퍼에서 수신자로 데이터를 전송하는 데 진행 상황이 진행되었는지 여부를 애플리케이션에 알립니다.

이 콜백은 올바른 TCP 작업에 필요하지 않습니다. 대부분의 애플리케이션은 TCP 스택이 완료되면 연결된 버퍼를 회수하기 위해 otTcpSendDone() 콜백을 사용할 수 있습니다. 이 콜백의 목적은 연결이 연결 피어에 데이터를 전송하는 진행률에 대한 자세한 정보를 활용하는 고급 애플리케이션을 지원하는 것입니다.

이 콜백의 작업은 TCP 전송 버퍼와 밀접하게 연결되어 있습니다. 전송 버퍼는 리전이 두 개 있는 것으로 이해할 수 있습니다. 먼저 전송 버퍼의 헤드 (전면)에 '전송 중인' 영역이 있습니다. 수신자에게 전송되었지만 아직 확인되지 않은 데이터에 해당합니다. 둘째, '백로그' 리전은"인플라이트(in-flight&quot) 리전에 없는 전송 버퍼의 모든 데이터로 구성됩니다. '백로그' 지역은 전송을 위해 대기열에 추가되었지만 아직 전송되지 않은 데이터에 해당합니다.

콜백은 두 가지 유형의 이벤트에 대한 응답으로 호출됩니다. 첫째, 전송 버퍼의 "인플라이트 (quot) 둘째, 전송 버퍼의 '백로그' 영역이 축소될 수 있습니다 (예: 새 데이터 전송). 이 두 조건은 연결 피어의 ACK 세그먼트에 대한 응답으로 동시에 발생하는 경우가 많으므로 단일 콜백에서 결합됩니다.

TCP 스택은 전송 버퍼의 꼬리에 있는 aInSendBuffer 바이트만 사용합니다. aInSendBuffer가 x만큼 감소하면 이전에 Send 버퍼의 헤드에 있던 추가 바이트 x가 더 이상 전송 버퍼의 일부가 아니며 애플리케이션에서 회수할 수 있습니다 (즉, 덮어쓸 수 있음). otLinkedBuffer 구조 자체는 참조되는 모든 바이트가 더 이상 전송 버퍼의 일부가 아닌 경우에만 회수할 수 있습니다.

이 콜백은 otTcpSendDone()이라고 가정하며, 애플리케이션에서 aInSendBuffer를 연결된 각 버퍼에 있는 바이트 수와 비교하여 연결된 버퍼를 회수할 수 있는 시점을 판단할 수 있습니다. 그러나 회수할 수 있는 otLinkedBuffer를 직접 전달하는 otTcpSendDone()이 훨씬 더 사용하기 쉽습니다. 두 콜백이 모두 등록되고 동일한 이벤트에 의해 트리거되면 (예: 동일한 ACK 세그먼트가 수신됨) otTcpSendDone() 콜백이 먼저 트리거된 후 이 콜백이 트리거됩니다.

또한 이 콜백은 전송 버퍼의 데이터가 아직 전송되지 않은 바이트 수를 나타내는 aBacklog를 제공합니다. 전송 데이터가 곧 전송된다는 확신이 있을 때만 전송 버퍼에 데이터를 추가하려고 하는 애플리케이션의 경우 크기가 aBacklog (0 또는 0에 가까울 때)만 적절히 있는 경우에만 데이터를 전송하는 것이 좋습니다. 예를 들어 애플리케이션은 데이터의 백로그를 방지하기 위해 데이터를 드롭하거나 집계하여 대기열 빌드에 반응할 수 있도록 aBacklog를 사용할 수 있습니다.

바이트 수가 양수인 otTcpSendByReference() 또는 otTcpSendByExtension() 호출 후에 otTcpForwardProgress() be are are are when is add is to use 바이트를 전송 버퍼에 추가한 직후(이 바이트 중 일부가 즉시 전송되거나 백로그가 줄어들 경우) 또는 향후 (연결이 데이터의 일부 또는 전체를 전송하여 백로그를 줄인 경우) 경우에 따라 otTcpForwardProgress() 호출이 이루어질 수 있습니다. 즉, '즉시'라는 것은 콜백이 tasklet에서 즉시 실행되도록 예약된다는 의미입니다. 콜백과 관련된 복잡성을 피하기 위해 otTcpForwardProgress() 콜백이 otTcpSendByReference() 또는 otTcpSendByExtension() 함수에서 직접 호출되지 않습니다.

세부정보
매개변수
[in] aEndpoint
연결의 TCP 엔드포인트입니다.
[in] aInSendBuffer
전송 버퍼의 바이트 수입니다("인플라이트" 및 "백로그" 리전 합계).
[in] aBacklog
전송을 위해 큐에 추가되었으나 아직 전송되지 않은 바이트 수("백로그" 리전)

OTTcpReceivedConnectionAction

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
수신 버퍼가 가득 차기 전에 수신할 수 있는 추가 바이트 수입니다.

OTTSendSendDone

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

이 콜백은 제공된 aData의 데이터가 연결 피어에 의해 확인되었으며 aData와 포함된 데이터를 애플리케이션에서 회수할 수 있음을 애플리케이션에 알립니다.

aDataotTcpSendByExtension()을 통해 영향을 받는 확장 프로그램을 포함하여 otTcpSendByReference()를 통해 TCP에 전달된 값과 동일합니다.

세부정보
매개변수
[in] aEndpoint
연결의 TCP 엔드포인트입니다.
[in] aData
회수할 수 있는 otLinkedBuffer에 대한 포인터.

함수

otTcpAbort

otError otTcpAbort(
  otTcpEndpoint *aEndpoint
)

이 TCP 엔드포인트와 연결된 TCP 연결을 강제로 종료합니다.

이렇게 하면 즉시 다른 엔드포인트에서 TCP 엔드포인트를 무료로 사용할 수 있고 송수신 버퍼를 비우며 otTcpSendByReference()otTcpSendByExtension() 호출에서 애플리케이션이 제공한 데이터의 소유권을 다시 전송합니다. 수신 버퍼의 TCP 엔드포인트 및 메모리는 TCP 엔드포인트와 연결된 상태로 유지됩니다.

세부정보
매개변수
[in] aEndpoint
중단할 TCP 엔드포인트를 나타내는 TCP 엔드포인트 구조에 대한 포인터입니다.
반환 값
OT_ERROR_NONE
TCP 엔드포인트 연결을 취소했습니다.
OT_ERROR_FAILED
TCP 엔드포인트 연결을 취소할 수 없습니다.

OTTBind

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 빠른 열기가 사용됩니다. 즉, 이 함수는 원격 호스트와 포트를 기록할 뿐이고 TCP 연결 설정 핸드셰이크가 otTcpSendByReference()로의 첫 번째 호출에서만 발생합니다. TCP 빠른 열기는 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 엔드포인트를 초기화하지 못했습니다.

OTTEndpointEndpointGetContext

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 포인터입니다.

otTcpListener초기화

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 수신 버퍼에 있는 데이터를 참조하는 연결된 버퍼 체인을 애플리케이션에 제공합니다.

연결된 버퍼 체인은 "receive ready" 콜백이 다음에 호출되거나 다음번 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 스택이 소유하게 됩니다. "senddone" 콜백이 애플리케이션에 대한 소유권을 해당 애플리케이션에 반환할 때까지 애플리케이션에서 수정하면 안 됩니다. 이 함수의 이전 호출에서 아직 호출되지 않았으나 '보내기 완료'를 호출한 경우에도 이 함수를 호출하여 연결된 다른 버퍼를 전송 대기열에 추가할 수 있습니다.

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

otTcpListener의 mTcbListener 필드가 TCPlp에서 tcpcb_listen 구조와 같은 크기가 되도록 OT_TCP_LISTENER_TCB_SIZE_BASE와 OT_TCP_LISTENER_TCB_NUM_POINTERS가 선택됩니다.

이는 mTcbListen 필드가 선언에 불투명하더라도 TCP 구현에서 구조 tcpcb로 처리되기 때문에 필요합니다.

OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2598

무선 홉 약 3개 이하를 통과하는 TCP 연결에 권장되는 버퍼 크기입니다.

메모리가 특히 제한된 플랫폼이나 높은 대역폭이 필요하지 않은 상황에서는 더 작은 버퍼 사이즈를 수동으로 선택하는 것이 좋습니다.

OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4157

여러 무선 홉을 통과하는 TCP 연결에 권장되는 버퍼 크기입니다.

TCP 연결이 매우 많은 홉을 통과하는 경우 (6개 이상) 큰 버퍼 사이즈를 수동으로 선택하는 것이 좋습니다.

리소스

OpenThread API 참조 주제는 GitHub에서 제공되는 소스 코드에서 가져옵니다. 자세한 정보를 보거나 문서 작성에 참여하려면 리소스를 참고하세요.