GetAddressByNameA 함수(nspapi.h)
[GetAddressByName 더 이상 Windows 소켓 2에서 사용할 수 없습니다. 대신 Protocol-Independent 이름 확인.]에 자세히 설명된 함수를 사용합니다.
GetAddressByName 함수는 네임스페이스 또는 기본 네임스페이스 집합을 쿼리하여 지정된 네트워크 서비스에 대한 네트워크 주소 정보를 검색합니다. 이 프로세스를 서비스 이름 확인이라고 합니다. 네트워크 서비스는 함수를 사용하여 바인딩 함수와 함께 사용할 수 있는 로컬 주소 정보를 가져올 수도 있습니다.
통사론
INT GetAddressByNameA(
[in] DWORD dwNameSpace,
[in] LPGUID lpServiceType,
[in, optional] LPSTR lpServiceName,
[in, optional] LPINT lpiProtocols,
[in] DWORD dwResolution,
[in, optional] LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,
[out] LPVOID lpCsaddrBuffer,
[in, out] LPDWORD lpdwBufferLength,
[in, out] LPSTR lpAliasBuffer,
[in, out] LPDWORD lpdwAliasBufferLength
);
매개 변수
[in] dwNameSpace
운영 체제에서 네트워크 주소 정보를 쿼리해야 하는 네임스페이스 또는 기본 네임스페이스 집합입니다.
다음 상수 중 하나를 사용하여 네임스페이스를 지정합니다.
GetAddressByName 대한 대부분의 호출은 특수 값 NS_DEFAULT 사용해야 합니다. 이렇게 하면 클라이언트가 인터넷 작업에서 사용할 수 있는 네임스페이스를 전혀 알지 못했습니다. 시스템 관리자가 네임스페이스 액세스를 결정합니다. 네임스페이스는 클라이언트가 변경 내용을 인식하지 않고도 오고 갈 수 있습니다.
[in] lpServiceType
네트워크 서비스의 유형을 지정하는 GUID(Globally Unique Identifier)에 대한 포인터입니다. Svcguid.h 헤더 파일에는 여러 GUID 서비스 형식의 정의와 매크로를 사용하여 작업할 수 있습니다.
Svcguid.h 헤더 파일은 Winsock2.h 헤더 파일에 의해 자동으로 포함되지 않습니다.
[in, optional] lpServiceName
서비스 이름을 고유하게 나타내는 0으로 끝나는 문자열에 대한 포인터입니다. 예를 들어 "MY SNA SERVER"입니다.
dwResolution RES_SERVICE 설정되면 함수는 lpServiceName 매개 변수를 무시합니다.
dwNameSpace NS_DNS 설정된 경우 *lpServiceName 호스트의 이름입니다.
[in, optional] lpiProtocols
프로토콜 식별자의 0으로 끝나는 배열에 대한 포인터입니다. 이 함수는 이러한 프로토콜을 제공하는 네임스페이스 공급자에 대한 이름 확인 시도를 제한합니다. 이렇게 하면 호출자가 검색 범위를 제한할 수 있습니다.
[in] dwResolution
서비스 이름 확인 프로세스의 측면을 지정하는 비트 플래그 집합입니다. 다음 비트 플래그가 정의됩니다.
[in, optional] lpServiceAsyncInfo
나중에 사용하도록 예약됨; 은 NULL
[out] lpCsaddrBuffer
하나 이상의 CSADDR_INFO 데이터 구조를 수신하는 버퍼에 대한 포인터입니다. 버퍼에 기록된 구조체의 수는 해결 시도에서 찾은 정보의 양에 따라 달라집니다. 대부분의 경우 하나만 있지만 여러 구조체가 기록된다고 가정해야 합니다.
[in, out] lpdwBufferLength
입력 시 lpCsaddrBuffer가리키는 버퍼의 크기를 바이트 단위로 지정하는 변수에 대한 포인터입니다.
출력 시 이 변수에는 CSADDR_INFO 구조체의 배열을 저장하는 데 필요한 총 바이트 수가 포함됩니다. 이 값이 *lpdwBufferLength입력 값보다 작거나 같고 함수가 성공하면 버퍼에 실제로 저장된 바이트 수입니다. 이 값이 *lpdwBufferLength입력 값보다 크면 버퍼가 너무 작고 *lpdwBufferLength 출력 값이 필요한 최소 버퍼 크기입니다.
[in, out] lpAliasBuffer
네트워크 서비스에 대한 별칭 정보를 수신하는 버퍼에 대한 포인터입니다.
네임스페이스가 별칭을 지원하는 경우 함수는 lpAliasBuffer
네임스페이스가 별칭을 지원하지 않는 경우 이중 0 종결자를 버퍼에 저장합니다.
이 매개 변수는 선택 사항이며 NULL
[in, out] lpdwAliasBufferLength
입력 시 lpAliasBuffer가리키는 버퍼의 크기(문자)를 지정하는 변수에 대한 포인터입니다.
출력 시 이 변수에는 이름 문자열 배열을 저장하는 데 필요한 총 요소 수(문자)가 포함됩니다. 이 값이 *lpdwAliasBufferLength입력 값보다 작거나 같고 함수가 성공하면 실제로 버퍼에 저장된 요소의 수입니다. 이 값이 *lpdwAliasBufferLength입력 값보다 크면 버퍼가 너무 작고 *lpdwAliasBufferLength 출력 값이 필요한 최소 버퍼 크기입니다.
반환 값
함수가 성공하면 반환 값은 lpCsaddrBuffer가리키는 버퍼에 기록된 CSADDR_INFO 데이터 구조의 수입니다.
함수가 실패하면 반환 값은 SOCKET_ERROR(-1)입니다. 확장 오류 정보를 얻으려면 다음 확장 오류 값을 반환하는 GetLastError호출합니다.
오류 코드 | 의미 |
---|---|
|
lpCsaddrBuffer 가리키는 버퍼가 너무 작아서 모든 관련 CSADDR_INFO 구조를 수신할 수 없습니다. *lpdwBufferLength반환된 값만큼 큰 버퍼를 사용하여 함수를 호출합니다. |
발언
이 함수는 gethostbyname 함수의 더 강력한 버전입니다. GetAddressByName 함수는 여러 이름 서비스에서 작동합니다.
GetAddressByName 함수를 사용하면 클라이언트가 네트워크 서비스에 대한 Windows 소켓 주소를 가져올 수 있습니다. 클라이언트는 해당 서비스 유형 및 서비스 이름으로 관심 있는 서비스를 지정합니다.
대부분의 이름 서비스는 서비스 이름을 확인할 때 이름 서비스 공급자가 고려하는 기본 접두사 또는 접미사를 지원합니다. 예를 들어 DNS 네임스페이스에서 도메인 이름이 "nt.microsoft.com"이고 "ftp millikan"이 입력으로 제공되면 DNS 소프트웨어가 "millikan"을 확인하는 데 실패하지만 "millikan.nt.microsoft.com"을 성공적으로 확인합니다.
GetAddressByName 함수는 특정 네임스페이스 내에서 또는 기본 네임스페이스 집합 내에서 두 가지 방법으로 서비스 주소를 검색할 수 있습니다. 관리자는 기본 네임스페이스를 사용하여 특정 네임스페이스가 이름으로 지정된 경우에만 서비스 주소를 검색할 수 있도록 지정할 수 있습니다. 관리자 또는 네임스페이스 - 설치 프로그램은 네임스페이스 검색 순서를 제어할 수도 있습니다.
메모
nspapi.h 헤더는 GETAddressByName을 UNICODE 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows 2000 Server [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | nspapi.h |
라이브러리 | Mswsock.lib |
DLL | Mswsock.dll |
참고 항목
gethostbyname