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

pdcomm_opcua_discover

함수

서버의 엔드포인트를 읽습니다(GetEndpoints).

int32_t pdcomm_opcua_discover(const uint8_t *endpoint, size_t size, uint32_t timeout_ms, pdcomm_opcua_handle *out)

선언 위치: #include <pdcomm/opcua/pdcomm_opcua.h>

endpoint로 SecurityPolicy None 보안 채널(secure channel)을 열고, 해당 엔드포인트 URL로 GetEndpoints를 보낸 뒤 채널을 닫습니다. 탐색(discovery)은 인증하지 않습니다. 여기서는 어떤 인증서도 검증하지 않으므로, 반환된 서버 인증서는 신뢰하기 전에 검증합니다.

결과는 UA Binary GetEndpointsResponse(인코딩 ID 431)를 담은 소유 버퍼이며, 네임스페이스 0 인코딩 NodeId 접두사(Part 6, 5.2.9)를 포함합니다. 버퍼에는 빈 ResponseHeader와 함께 서버의 EndpointDescription이 들어 있습니다.

매개변수

이름설명
endpointUTF-8로 된 opc.tcp://host[:port][/path] URL이며 1~4096바이트입니다. 기본 포트는 4840입니다.
sizeendpoint의 크기(바이트)입니다.
timeout_ms각 네트워크 교환의 시간 초과이며 1~300000 ms입니다.
out응답 버퍼 핸들을 받습니다.

반환값

#PDCOMM_OPCUA_OK, #PDCOMM_OPCUA_INVALID_INPUT, #PDCOMM_OPCUA_LIMIT 중 하나를 반환합니다. URL이 opc.tcp://가 아니거나 네트워크 실패 또는 프로토콜 실패가 발생하면 #PDCOMM_OPCUA_RUNTIME_ERROR를 반환합니다. opcua-client 라이선스가 없으면 #PDCOMM_OPCUA_LICENSE_REQUIRED를 반환합니다.

참고

  • 교환마다 최대 시간 초과(timeout)만큼 호출한 스레드를 블로킹합니다.