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를 호출하여 특정 오류 코드를 검색할 수 있습니다.

오류 코드 의미
WSANOTINITIALISED
이 API를 사용하기 전에 성공적인 WSAStartup 호출이 발생해야 합니다.
WSAENETDOWN
네트워크 하위 시스템이 실패했습니다.
WSAEFAULT
이름 또는 namelen 매개 변수가 사용자 주소 공간의 유효한 부분이 아니거나 namelen 매개 변수가 너무 작습니다.
WSAEINPROGRESS
차단 Windows Sockets 1.1 호출이 진행 중이거나 서비스 공급자가 여전히 콜백 함수를 처리하고 있습니다.
WSAENOTSOCK
설명자가 소켓이 아닙니다.
WSAEINVAL
소켓이 바인딩된 주소에 바인딩되지 않았거나 바인딩에 ADDR_ANY 지정되었지만 연결이 아직 발생하지 않았습니다.

설명

getsockname 함수는 이름에 지정된 소켓 설명자의 현재 이름을 검색합니다. s 매개 변수로 지정된 바인딩된 소켓 또는 연결된 소켓에서 사용됩니다. 로컬 연결이 반환됩니다. 이 호출은 바인딩을 먼저 수행하지 않고 연결 호출이 수행된 경우에 특히 유용합니다. getsockname 함수는 시스템에서 설정한 로컬 연결을 확인하는 유일한 방법을 제공합니다.

호출할 때 namelen 매개 변수에는 이름 버퍼의 크기(바이트)가 포함됩니다. 반환할 때 namelen 매개 변수에는 name 매개 변수의 실제 크기(바이트)가 포함됩니다.

소켓이 연결 또는 수락(예: ADDR_ANY 사용)으로 연결되지 않은 경우, getsockname 함수는 소켓이 지정되지 않은 주소에 바인딩된 경우 호스트 주소에 대한 정보를 항상 반환하지는 않습니다. Windows 소켓 애플리케이션은 소켓이 연결되지 않는 한 주소가 지정된다고 가정해서는 안 됩니다. 다중 호스트에서 사용할 때 소켓이 연결되지 않는 한 소켓에 사용할 주소는 알 수 없습니다. 소켓이 연결 없는 프로토콜을 사용하는 경우 소켓에서 I/O가 발생할 때까지 주소를 사용할 수 없습니다.

Windows Phone 8: 이 함수는 Windows Phone 8 이상에서 Windows Phone 스토어 앱에서 지원됩니다.

Windows 8.1Windows 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

추가 정보

SOCKADDR

Winsock 함수

Winsock 참조

bind

getpeername

socket