nl:: Inet:: TCPEndPoint
#include <src/inet/TCPEndPoint.h>
이 클래스의 객체는 TCP 전송 엔드포인트를 나타냅니다.
요약
Nest Inet 레이어는 TCP 전송 엔드포인트 (Linux 및 BSD 파생 시스템의 SOCK_STREAM 소켓) 또는 LwIP TCP 프로토콜 제어 블록과 상호작용하는 메서드를 캡슐화합니다. 시스템이 적절하게 구성되어 있기 때문입니다.
상속
상속 출처: nl::Inet::EndPointBasis
공개 유형 |
|
---|---|
@10{
|
enum 기본 엔드포인트의 기본 동적 상태입니다. |
OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
연결 수락 오류 이벤트 처리 함수의 유형입니다. |
OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
연결 설정 이벤트 처리 함수의 유형입니다. |
OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
연결 설정 이벤트 처리 함수의 유형입니다. |
OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
|
typedefvoid(*
연결에서 수신된 이벤트 처리 함수의 유형입니다. |
OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
|
typedefvoid(*
데이터 수신 이벤트 처리 함수의 유형입니다. |
OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
|
typedefvoid(*
데이터 전송 이벤트 처리 기능의 유형입니다. |
OnPeerCloseFunct)(TCPEndPoint *endPoint)
|
typedefvoid(*
절반 종료 수신 이벤트 처리 함수의 유형입니다. |
OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
|
typedefvoid(*
TCP SendIdle 변경 신호 처리 기능의 유형입니다. |
공개 속성 |
|
---|---|
OnAcceptError
|
엔드포인트의 연결 수락 이벤트 처리 함수 위임입니다.
|
OnConnectComplete
|
엔드포인트의 연결 설정 이벤트 처리 함수 위임입니다.
|
OnConnectionClosed
|
엔드포인트의 닫기 이벤트 처리 함수 위임입니다.
|
OnConnectionReceived
|
엔드포인트의 연결 수신 이벤트 처리 함수 위임입니다.
|
OnDataReceived
|
엔드포인트의 메시지 텍스트 수신 이벤트 처리 함수 위임입니다.
|
OnDataSent
|
엔드포인트의 메시지 텍스트 전송 이벤트 처리 함수 위임입니다.
|
OnPeerClose
|
엔드포인트의 절반 종료 수신 이벤트 처리 함수 위임입니다.
|
OnTCPSendIdleChanged
|
TCP 연결 전송 채널의 유휴 상태가 변경될 때 엔드포인트 신호의 이벤트 처리 함수 위임입니다.
|
ReceiveEnabled
|
bool
애플리케이션이 데이터를 수신하고 있는지 여부를 나타내는 제어 스위치.
|
State
|
enum nl::Inet::TCPEndPoint::@10
기본 엔드포인트의 기본 동적 상태입니다.
|
공개 함수 |
|
---|---|
Abort(void)
|
void
엔드포인트를 즉시 닫습니다. 즉, RST 패킷을 전송합니다.
|
AckReceive(uint16_t len)
|
메시지 텍스트 수신을 확인합니다.
|
Bind(IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr)
|
엔드포인트를 인터페이스 IP 주소에 바인딩합니다.
|
Close(void)
|
TCP 전체 닫기를 시작합니다. 즉, 송수신이 모두 완료된 상태입니다.
|
Connect(IPAddress addr, uint16_t port, InterfaceId intf)
|
TCP 연결을 시작합니다.
|
DisableKeepAlive(void)
|
TCP '연결 유지' 사용 중지 옵션을 선택합니다.
|
DisableReceive(void)
|
void
리셉션을 사용 중지합니다.
|
EnableKeepAlive(uint16_t interval, uint16_t timeoutCount)
|
TCP '연결 유지' 사용 설정 옵션을 선택합니다.
|
EnableNoDelay(void)
|
EnableNoDelay를 사용 설정하세요.
|
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
상태에 있던 상태
속성 | |
---|---|
kState_Bound
|
엔드포인트가 바인딩되었지만 리슨은 하지 않습니다. |
kState_Closed
|
엔드포인트가 닫혔으며 출시할 준비가 되었습니다. |
kState_Closing
|
엔드포인트가 양방향으로 닫힙니다. |
kState_Connected
|
엔드포인트가 연결되었으며 tx/rx를 사용할 준비가 되었습니다. |
kState_Connecting
|
엔드포인트에서 연결을 시도하고 있습니다. |
kState_Listening
|
엔드포인트에서 연결을 수신 중입니다. |
kState_Ready
|
엔드포인트가 초기화되었지만 결합되지 않았습니다. |
kState_ReceiveShutdown
|
엔드포인트가 절반 종료에 응답했습니다. |
kState_SendShutdown
|
엔드포인트에서 절반 종료가 시작되었습니다. |
OnAcceptErrorFunct
void(* OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
연결 수락 오류 이벤트 처리 함수의 유형입니다.
OnAcceptError
위임 멤버에 이 유형의 함수를 제공하여 endPoint
에서 연결 수락 오류 이벤트를 처리합니다. err
인수는 오류 유형에 관한 구체적인 세부정보를 제공합니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
OnConnectCompleteFunct
void(* OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
연결 설정 이벤트 처리 함수의 유형입니다.
OnConnectComplete
위임 멤버에 이 유형의 함수를 제공하여 endPoint
에서 연결 설정 이벤트를 처리합니다. err
인수는 성공적인 연결과 실패를 구분합니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
OnConnectionClosedFunct
void(* OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
연결 설정 이벤트 처리 함수의 유형입니다.
endPoint
에서 연결 종료 이벤트를 처리하도록 OnConnectionClosed
위임 멤버에 이 유형의 함수를 제공합니다. err
인수는 성공적인 종료와 실패를 구분합니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
OnConnectionReceivedFunct
void(* OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
연결에서 수신된 이벤트 처리 함수의 유형입니다.
listeningEndPoint
에서 연결 수신 이벤트를 처리하도록 OnConnectionReceived
위임 멤버에 이 유형의 함수를 제공합니다. 새로 수신된 엔드포인트 conEndPoint
은 IP 주소 peerAddr
및 TCP 포트 peerPort
에 있습니다.
세부정보 | |||||||||
---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
OnDataReceivedFunct
void(* OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
데이터 수신 이벤트 처리 함수의 유형입니다.
OnDataReceived
위임 멤버에 이 유형의 함수를 제공하여 endPoint
에서 데이터 수신 이벤트를 처리합니다. 여기서 data
는 수신된 메시지 텍스트입니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
데이터 수신 이벤트 핸들러는 AckReceive
메서드를 사용하여 처리된 데이터를 확인해야 합니다. PutBackReceivedData
를 대신 사용하지 않는 한 데이터 버퍼의 Free
메서드도 호출해야 합니다.
OnDataSentFunct
void(* OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
데이터 전송 이벤트 처리 기능의 유형입니다.
이 유형의 함수를 OnDataSent
위임 멤버에 제공하여 endPoint
에서 데이터 전송 이벤트를 처리합니다. 여기서 len
는 기본 네트워크 스택에서 전송할 수 있는 TCP 전송 창에 추가된 메시지 텍스트의 길이입니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
OnPeerCloseFunct
void(* OnPeerCloseFunct)(TCPEndPoint *endPoint)
절반 종료 수신 이벤트 처리 함수의 유형입니다.
endPoint
에서 연결 종료 이벤트를 처리하도록 OnPeerClose
위임 멤버에 이 유형의 함수를 제공합니다.
세부정보 | |||
---|---|---|---|
매개변수 |
|
OnTCPSendIdleChangedFunct
void(* OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
TCP SendIdle 변경 신호 처리 기능의 유형입니다.
유휴 상태와 유휴 상태 사이에서 상태가 변경되는 TCPEndPoint의 전송 채널 이벤트를 처리하는 OnTCPSendIdleChanged
위임 멤버에 이 유형의 함수를 제공합니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
공개 속성
OnTCPSendIdleChanged
OnTCPSendIdleChangedFunct OnTCPSendIdleChanged
TCP 연결 전송 채널의 유휴 상태가 변경될 때 엔드포인트 신호의 이벤트 처리 함수 위임입니다.
상위 레이어에서 이를 활용하여 전송된 데이터가 피어에 안정적으로 전달되었는지 여부에 따라 적절한 조치를 취합니다.
ReceiveEnabled
bool ReceiveEnabled
애플리케이션이 데이터를 수신하고 있는지 여부를 나타내는 제어 스위치.
주
enum nl::Inet::TCPEndPoint::@10 State
기본 엔드포인트의 기본 동적 상태입니다.
객체는 '준비됨' 상태에서 초기화됩니다. TCP 전송 상태 머신의 상태 단순화에 해당하는 후속 상태로 넘어갑니다.
참고: kBasisState_Closed
상태 열거형은 이전 바이너리 호환성을 위해 kState_Ready
에 매핑됩니다. 기존 kState_Closed
는 '아직 열지 않음'의 차이를 별도로 식별하기 위해 존재합니다. '이전에 영업을 시작했으며
닫힘 이전에 kState_Ready
및 kState_Closed
상태에 있던 상태
공개 함수
취소
void Abort( void )
엔드포인트를 즉시 닫습니다. 즉, RST 패킷을 전송합니다.
AckReceive
INET_ERROR AckReceive( uint16_t len )
메시지 텍스트 수신을 확인합니다.
이 메서드를 사용하여 수신된 데이터의 전체 또는 일부의 수신을 확인합니다. len
가 미확인 수신된 총 데이터보다 큰 경우 운영 시맨틱스가 정의되지 않습니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
바인딩
INET_ERROR Bind( IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr )
엔드포인트를 인터페이스 IP 주소에 바인딩합니다.
엔드포인트를 지정된 네트워크 인터페이스 IP 주소에 바인딩합니다.
세부정보 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||
반환 값 |
|
LwIP에서는 이미 LwIP 스택 잠금을 획득한 상태에서 이 메서드를 호출하면 안 됩니다.
닫기
INET_ERROR Close( void )
TCP 전체 닫기를 시작합니다. 즉, 송수신이 모두 완료된 상태입니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
반환 값 |
|
연결
INET_ERROR Connect( IPAddress addr, uint16_t port, InterfaceId intf )
TCP 연결을 시작합니다.
If possible, then this method initiates a TCP connection to the destination \c addr (with \c intf used as the scope identifier for IPv6 link-local destinations) and \c port.
세부정보 | |||||||||
---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||
반환 값 |
|
DisableKeepAlive
INET_ERROR DisableKeepAlive( void )
TCP '연결 유지' 사용 중지 옵션을 선택합니다.
TCPEndPoint::DisableKeepAlive.
연결된 TCP 연결에서 TCP 연결 유지 프로브를 사용 중지합니다.
세부정보 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
반환 값 |
|
참고: 이 메서드는 엔드포인트가 연결된 상태 중 하나일 때만 호출할 수 있습니다. 엔드포인트에서 연결 유지가 사용 설정되지 않은 경우 이 메서드는 아무 작업도 실행하지 않습니다.
DisableReceive
void DisableReceive( void )
리셉션을 사용 중지합니다.
모든 이벤트 핸들러를 사용 중지합니다. 수신을 사용 중지하는 엔드포인트로 전송된 데이터는 수신 기간이 소진될 때까지 확인됩니다.
EnableKeepAlive
INET_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
TCP '연결 유지' 사용 설정 옵션을 선택합니다.
TCP '연결 유지' 자동 전송 시작 interval
초마다 프로브 세그먼트를 가져옵니다. 부정적인 응답을 받은 후 또는 긍정적인 응답을 받지 않고 timeoutCount
프로브 세그먼트를 전송한 후 연결이 자동으로 취소됩니다.
세부정보 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||
반환 값 |
|
사양 세부정보는 RFC 1122, 섹션 4.2.3.6을 참조하세요.
연결된 TCP 연결에서 TCP 연결 유지 프로브를 사용 설정합니다.
참고: 이 메서드는 엔드포인트가 연결된 상태 중 하나일 때만 호출할 수 있습니다. 이 메서드를 여러 번 호출하여 연결 유지 간격 또는 제한 시간 수를 조정할 수 있습니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
EnableNoDelay
INET_ERROR EnableNoDelay( void )
EnableNoDelay를 사용 설정하세요.
TCPEndPoint::EnableNoDelay를 사용하는 것이 좋습니다.
TCP_NODELAY 소켓 옵션을 설정하여 TCP에서 nagle 버퍼링 알고리즘을 사용 중지합니다.
EnableReceive
void EnableReceive( void )
리셉션을 활성화합니다.
모든 이벤트 핸들러를 사용 설정합니다. 수신을 사용 중지하는 엔드포인트로 전송된 데이터는 수신 기간이 소진될 때까지 확인됩니다.
무료
void Free( void )
TCP 전체 닫기를 시작 (또는 계속)하고 오류를 무시합니다.
객체가 무료 풀로 반환되고 이후 나머지 모든 사용자 참조가 무효화됩니다.
GetLocalInfo
INET_ERROR GetLocalInfo( IPAddress *retAddr, uint16_t *retPort )
로컬 엔드포인트의 IP 주소와 TCP 포트를 추출합니다.
두 인수에 NULL
포인터 값을 사용하지 마세요.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
GetPeerInfo
INET_ERROR GetPeerInfo( IPAddress *retAddr, uint16_t *retPort ) const
원격 엔드포인트의 IP 주소와 TCP 포트를 추출합니다.
두 인수에 NULL
포인터 값을 사용하지 마세요.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
IsConnected
bool IsConnected( void ) const
TCP 연결이 설정되었는지 여부를 추출합니다.
듣기
INET_ERROR Listen( uint16_t backlog )
TCP 메시지를 수신할 엔드포인트를 준비합니다.
State
이 이미 kState_Listening
이면 작업이 실행되지 않습니다. 그렇지 않으면 플랫폼의 시맨틱스에 따라 State
가 kState_Listening
로 설정되고 엔드포인트가 TCP 메시지를 수신할 준비가 됩니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
||||
반환 값 |
|
일부 플랫폼에서는 backlog
인수가 사용되지 않습니다. 큐의 깊이가 고정되어 한 번에 하나의 연결만 허용될 수 있습니다.
LwIP 시스템에서는 이미 획득한 LwIP 스택 잠금으로 이 메서드를 호출하면 안 됩니다.
LogId
uint16_t LogId( void )
엔드포인트의 식별자를 가져옵니다.
세부정보 | |
---|---|
반환 |
사용 로그에 대한 불투명한 고유 식별자를 반환합니다.
|
MarkActive
void MarkActive( void )
활동 알림, 즉 유휴 타이머를 재설정합니다.
유휴 타이머를 0으로 재설정합니다.
PendingReceiveLength
uint32_t PendingReceiveLength( void )
PendingSendLength
uint32_t PendingSendLength( void )
첫 번째 전송을 기다리는 데이터의 길이를 추출합니다.
세부정보 | |
---|---|
반환 |
전송 큐의 전송되지 않은 바이트 수입니다.
|
PutBackReceivedData
INET_ERROR PutBackReceivedData( Weave::System::PacketBuffer *data )
메시지 텍스트를 수신 대기열의 헤드로 다시 푸시합니다.
이 메서드는 데이터의 미확인 부분을 수신 큐에 다시 배치하기 위해 데이터 수신 이벤트 핸들러에서만 호출할 수 있습니다. 호출자가 데이터 수신 이벤트 핸들러의 범위를 벗어나거나, data
가 핸들러에 제공된 Weave::System::PacketBuffer
가 아니거나, data
에 AckReceive(uint16_t len)
메서드에 대한 이전 호출에서 확인된 바이트 이후에 남아 있는 확인되지 않은 부분이 포함되어 있지 않으면 운영 시맨틱스가 정의되지 않습니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
||||
반환 값 |
|
보내기
INET_ERROR Send( Weave::System::PacketBuffer *data, bool push )
TCP 연결 시 메시지 텍스트를 보냅니다.
Weave::System::PacketBuffer::Free
메서드는 전송의 성공 여부와 관계없이 data
인수에서 호출됩니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
||||
반환 값 |
|
SetConnectTimeout
void SetConnectTimeout( const uint32_t connTimeoutMsecs )
Connect가 성공하거나 오류를 반환하기 위한 제한 시간을 설정하세요.
세부정보 | |||
---|---|---|---|
매개변수 |
|
SetUserTimeout
INET_ERROR SetUserTimeout( uint32_t userTimeoutMillis )
TCP TCP_USER_TIMEOUT 소켓 옵션을 설정합니다.
TCPEndPoint::SetUserTimeout을 사용합니다.
값이 0보다 크면 TCP가 해당 연결을 강제로 종료하기 전에 전송된 데이터를 미확인 상태로 유지할 수 있는 최대 시간(밀리초)을 지정합니다. 옵션 값을 0으로 지정하면 TCP가 시스템 기본값을 사용합니다. 자세한 내용은 RFC 5482를 참조하세요.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
TCP 사용자 시간 제한 소켓 옵션을 설정합니다.
값이 0보다 크면 TCP가 해당 연결을 강제로 종료하기 전에 전송된 데이터를 미확인 상태로 유지할 수 있는 최대 시간(밀리초)을 지정합니다. 옵션 값을 0으로 지정하면 TCP에서 시스템 기본값을 사용합니다. 자세한 내용은 RFC 5482를 참조하세요.
참고: 이 메서드는 엔드포인트가 연결된 상태 중 하나일 때만 호출할 수 있습니다. 이 메서드를 여러 번 호출하여 연결 유지 간격 또는 제한 시간 수를 조정할 수 있습니다.
종료
INET_ERROR Shutdown( void )
TCP 절반 닫기, 즉 전송 완료를 시작합니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
반환 값 |
|