PNRP 및 WSASetService
PNRP는 WSASetService 함수를 사용하여 피어 이름을 등록하거나 제거합니다.
이름 등록
등록에는 피어 이름 및 서비스에 연결할 수 있는 엔드포인트 집합이 포함됩니다. 등록은 PNRP 클라우드에만 적용됩니다. 피어가 등록되면 등록과 등록 정보가 다른 노드로 전파되는 사이에 지연이 있습니다. 이 시간 동안 다른 노드는 새로 등록된 피어를 resolve 수 없습니다.
서비스 등록은 영구적이지 않습니다.
- 피어 이름을 등록하는 클라이언트 프로세스가 종료되거나 WSACleanup을 호출하는 경우 피어 이름이 등록 취소됩니다.
- 지정된 피어 이름이 현재 프로세스에 의해 동일한 클라우드에 이미 등록된 경우 새 등록 값으로 대체됩니다.
피어 이름을 등록할 때 다음 매개 변수 값을 표시해야 합니다.
- essOperation 매개 변수의 값은 RNRSERVICE_REGISTER.
- dwControlFlags 매개 변수는 0이어야 합니다.
피어 이름을 등록할 때 lpqsRegInfo 매개 변수에서 참조하는 LPWSAQUERYSET 구조체에는 다음 값이 포함되어야 합니다.
-
dwSize
-
이 구조체의 크기를 지정합니다.
-
lpszServiceInstanceName
-
등록할 피어 이름을 지정합니다. 피어 이름이 안전하지 않은 경우 ID는 선택 사항입니다. ID가 NULL로 지정된 경우 PNRP는 기본적으로 컴퓨터 로컬 ID를 사용합니다.
-
lpServiceClassID
-
SVCID_PNRPNAME 합니다.
-
lpVersion
-
무시됩니다. NULL로 설정합니다.
-
lpszComment
-
무시됩니다. 그러나 문자열은 NULL 종결자를 포함하여 40자 미만이어야 합니다.
-
dwNameSpace
-
NS_PNRPNAME 또는 NS_ALL 합니다.
-
lpNSProviderID
-
NS_PROVIDER_PNRPNAME 또는 NULL이어야 합니다.
-
lpszContext
-
클라우드 이름, 빈 문자열 또는 NULL이어야 합니다. 이 값이 NULL 이거나 빈 문자열인 경우 기본 클라우드인 "Global"이 사용됩니다. 그렇지 않으면 유효한 클라우드 이름을 가리킬 수 있습니다.
-
dwNumberOfProtocols
-
무시됩니다. 0으로 설정합니다.
-
lpszQueryString
-
무시됩니다. NULL로 설정합니다.
-
dwNumberOfCsAddrs
-
서비스에서 등록한 주소 수를 지정합니다. 단일 이름에 등록할 수 있는 최대 주소 수는 10개입니다.
-
lpcsaBuffer
-
등록할 주소 목록에 대한 포인터입니다.
-
dwOutputFlags
-
무시됩니다. 0으로 설정합니다.
-
lpBlob
-
PNRPINFO 구조를 가리키는 BLOB 구조체에 대한 포인터입니다. PNRPINFO 구조체의 특정 매개 변수를 설정해야 합니다. 자세한 내용은 다음 PNRPINFO 구조 섹션을 참조하세요.
PNRPINFO 구조체
LPWSAQUERYSET 구조체의 lpBlob 멤버가 설정된 경우 PNRPINFO 구조체의 다음 멤버를 설정해야 합니다.
-
dwSize
-
이 구조체의 크기를 지정합니다.
-
lpwszIdentity
-
PeerIdentityCreate를 사용하여 만든 피어 이름의 ID를 지정합니다. 피어 이름이 안전하지 않은 경우 ID는 선택 사항입니다. ID가 NULL로 지정된 경우 PNRP는 기본적으로 컴퓨터 로컬 ID를 사용합니다.
-
nMaxResolve
-
무시됩니다. 0으로 설정합니다.
-
dwTimeout
-
무시됩니다. 0으로 설정합니다.
-
dwLifetime
-
새로 고침 작업 사이의 시간(초)을 지정합니다.
-
enResolveCriteria
-
무시됩니다. 0으로 설정합니다.
-
dwFlags
-
0(0) 또는 PNRPINFO_HINT 중 하나여야 합니다. 기본값은 0입니다. 즉, PNRP ID의 서비스 위치 부분은 saHint의 IP 주소를 사용하여 빌드됩니다. 그렇지 않으면 서비스 위치는 lpcsaBuffer 멤버의 첫 번째 IPv6 항목에서 첫 번째 IP 주소를 사용하여 빌드됩니다.
-
saHint
-
힌트의 IPv6 주소를 지정합니다.
-
enNameState
-
무시됩니다. 0으로 설정합니다.
피어 이름 등록 취소
다음 목록에서는 피어 이름 등록 취소에 대한 중요한 정보를 식별합니다.
- 피어 이름을 등록하는 애플리케이션만 등록을 취소할 수 있습니다.
- WSACleanup이 호출되면 피어 이름이 자동으로 등록 취소됩니다.
- PNRP는 항상 전체 서비스 이름 등록을 제거합니다. 개별 주소를 제거할 수 없습니다.
- 이름을 등록 취소할 때 essOperation 매개 변수의 값은 RNRSERVICE_DELETE.
- PNRP는 RNRSERVICE_DEREGISTER 값을 지원하지 않습니다.
- dwControlFlags 매개 변수는 0이어야 합니다.
이름을 등록 취소할 때 lpqsRegInfo 매개 변수 참조에 포함된 LPWSAQUERYSET 구조체에는 다음 값이 포함되어야 합니다.
-
dwSize
-
이 구조체의 크기를 지정합니다.
-
lpszServiceInstanceName
-
등록 취소할 피어 이름을 지정합니다.
-
lpServiceClassID
-
SVCID_PNRPNAME 합니다.
-
lpVersion
-
무시됩니다. NULL로 설정합니다.
-
lpszComment
-
무시됩니다. NULL로 설정합니다.
-
dwNameSpace
-
NS_PNRPNAME 또는 NS_ALL 합니다.
-
lpNSProviderID
-
NS_PROVIDER_PNRPNAME 또는 NULL이어야 합니다.
-
lpszContext
-
클라우드 이름, 빈 문자열 또는 NULL이어야 합니다. 이 값이 NULL 이거나 빈 문자열인 경우 기본 클라우드인 "Global"이 사용됩니다. 그렇지 않으면 유효한 클라우드 이름을 가리킵니다.
-
dwNumberOfProtocols
-
무시됩니다. 를 0으로 설정합니다.
-
lpszQueryString
-
무시됩니다. NULL로 설정합니다.
-
dwNumberOfCsAddrs
-
무시됩니다. NULL로 설정합니다.
-
lpcsaBuffer
-
무시됩니다. NULL로 설정합니다.
-
dwOutputFlags
-
무시됩니다. 를 0으로 설정합니다.
-
lpBlob
-
PNRPINFO 구조를 가리키는 BLOB 구조체에 대한 포인터입니다. lpBlob 구조체의 lpszIdentity 멤버는 피어 이름을 등록하는 데 사용되는 ID의 이름을 식별합니다. 나머지 멤버는 이름을 등록할 때 사용되는 것과 동일한 값으로 설정해야 합니다.
관련 항목
-
WSASetService