콘텐츠로 이동
무료 평가 시작

pdcomm_tcp_create

함수

HSMS 엔드포인트를 만듭니다.

PdcommStatus pdcomm_tcp_create(const char *address, size_t address_length, const PdcommTcpOptions *options, PdcommTcpEndpoint **out)

선언 위치: #include <pdcomm_tcp.h>

주소와 옵션을 검증하고 복사합니다. 수동(passive) 엔드포인트는 이 호출 중에 수신 대기 소켓을 바인딩합니다. 능동(active) 엔드포인트는 pdcomm_tcp_poll()이 연결 시도를 실행하기 전까지 I/O를 하지 않습니다. 새 엔드포인트는 #PDCOMM_TCP_STOPPED 상태입니다.

매개변수

이름설명
addressNUL 종료 문자가 없는 UTF-8 텍스트로 된 숫자 소켓 주소입니다(예: 127.0.0.1:5000, [::1]:5000). 호스트 이름은 해석하지 않습니다. 능동 모드에서는 상대방 주소이고, 수동 모드에서는 로컬 수신 대기 주소입니다. 수동 모드에서 포트 0을 지정하면 소켓을 바인딩할 때마다 임시 포트를 고릅니다(pdcomm_tcp_local_address()로 다시 읽습니다).
address_lengthaddress의 바이트 수입니다.
options엔드포인트 구성입니다. ::PdcommTcpOptions를 참고합니다.
out새 엔드포인트를 받습니다. 다른 어떤 검사보다 먼저 NULL로 설정되므로 실패하면 항상 NULL입니다.

반환값

성공하면 #PDCOMM_OK를 반환합니다. out 또는 options가 NULL이거나, options->struct_size 또는 options->item_limits.struct_size가 너무 작거나, version이 #PDCOMM_TCP_OPTIONS_VERSION이 아니거나, reserved가 0이 아니거나, mode를 알 수 없거나, 주소가 숫자 소켓 주소가 아니거나, 타이머, max_write_frames, max_io_chunk, max_application_events, poll_budget 중 하나가 0이거나, max_frame_bytes 또는 max_write_bytes가 14보다 작으면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. max_events가 72보다 작거나, max_write_bytes가 max_frame_bytes보다 작거나, max_application_bytes가 max_frame_bytes에서 14를 뺀 값보다 작으면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 수동 모드의 수신 대기 소켓을 바인딩할 수 없으면 #PDCOMM_IO_ERROR를 반환합니다. secs-gem 모듈을 허가하는 라이선스가 없으면 #PDCOMM_LICENSE_REQUIRED를 반환합니다. 라이선스는 포인터, 구조체, 모드, 주소 인수를 확인한 뒤, 타이머와 큐 한도를 검증하고 소켓을 바인딩하기 전에 검사하며, 아무것도 만들지 않습니다. 그 밖에 #PDCOMM_ALLOCATION_FAILED 또는 #PDCOMM_INTERNAL_ERROR를 반환합니다.

참고

  • 소유권: pdcomm_tcp_destroy()로 엔드포인트를 해제합니다.
  • out은 address 또는 options와 겹치면 안 됩니다.