getsockname 함수(winsock.h)
getsockname 함수는 소켓의 로컬 이름을 검색합니다.
구문
int getsockname(
[in] SOCKET s,
[out] sockaddr *name,
[in, out] int *namelen
);
매개 변수
[in] s
소켓을 식별하는 설명자입니다.
[out] name
소켓의 주소(이름)를 받는 SOCKADDR 구조체에 대한 포인터입니다.
[in, out] namelen
이름 버퍼의 크기(바이트)입니다.
반환 값
오류가 발생하지 않으면 getsockname은 0을 반환합니다. 그렇지 않으면 SOCKET_ERROR 값이 반환되고 WSAGetLastError를 호출하여 특정 오류 코드를 검색할 수 있습니다.
오류 코드 | 의미 |
---|---|
이 API를 사용하기 전에 성공적인 WSAStartup 호출이 발생해야 합니다. | |
네트워크 하위 시스템이 실패했습니다. | |
이름 또는 namelen 매개 변수가 사용자 주소 공간의 유효한 부분이 아니거나 namelen 매개 변수가 너무 작습니다. | |
차단 Windows Sockets 1.1 호출이 진행 중이거나 서비스 공급자가 여전히 콜백 함수를 처리하고 있습니다. | |
설명자가 소켓이 아닙니다. | |
소켓이 바인딩된 주소에 바인딩되지 않았거나 바인딩에 ADDR_ANY 지정되었지만 연결이 아직 발생하지 않았습니다. |
설명
getsockname 함수는 이름에 지정된 소켓 설명자의 현재 이름을 검색합니다. s 매개 변수로 지정된 바인딩된 소켓 또는 연결된 소켓에서 사용됩니다. 로컬 연결이 반환됩니다. 이 호출은 바인딩을 먼저 수행하지 않고 연결 호출이 수행된 경우에 특히 유용합니다. getsockname 함수는 시스템에서 설정한 로컬 연결을 확인하는 유일한 방법을 제공합니다.
호출할 때 namelen 매개 변수에는 이름 버퍼의 크기(바이트)가 포함됩니다. 반환할 때 namelen 매개 변수에는 name 매개 변수의 실제 크기(바이트)가 포함됩니다.
소켓이 연결 또는 수락(예: ADDR_ANY 사용)으로 연결되지 않은 경우, getsockname 함수는 소켓이 지정되지 않은 주소에 바인딩된 경우 호스트 주소에 대한 정보를 항상 반환하지는 않습니다. Windows 소켓 애플리케이션은 소켓이 연결되지 않는 한 주소가 지정된다고 가정해서는 안 됩니다. 다중 호스트에서 사용할 때 소켓이 연결되지 않는 한 소켓에 사용할 주소는 알 수 없습니다. 소켓이 연결 없는 프로토콜을 사용하는 경우 소켓에서 I/O가 발생할 때까지 주소를 사용할 수 없습니다.
Windows Phone 8: 이 함수는 Windows Phone 8 이상에서 Windows Phone 스토어 앱에서 지원됩니다.
Windows 8.1 및 Windows Server 2012 R2: 이 함수는 Windows 8.1, Windows Server 2012 R2 이상에서 Windows 스토어 앱에서 지원됩니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8.1, Windows Vista [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | winsock.h(Winsock2.h 포함) |
라이브러리 | Ws2_32.lib |
DLL | Ws2_32.dll |