
socket_getsockname 함수는 소켓의 주소 정보를 가져올 때 사용됩니다.
이 함수의 인자는 소켓 파일 디스크립터를 사용해야 합니다. 소켓 파일 디스크립터는 소켓을 열 때 반환되는 정수 값입니다.
소켓 주소 정보를 가져올 때, 주소 구조체를 생성하고 소켓 주소 정보를 저장하는 방법은 다음과 같습니다.
#hostingforum.kr
c
#include
// 소켓 주소 정보를 저장하는 주소 구조체
struct sockaddr_in addr;
socklen_t addr_len = sizeof(addr);
// 소켓 주소 정보를 가져옵니다.
int ret = getsockname(sock_fd, (struct sockaddr *)&addr, &addr_len);
if (ret == -1) {
// 오류 처리
}
소켓 주소 정보를 저장하는 주소 구조체의 필드는 다음과 같습니다.
- `sa_family`: 주소 체계를 나타내는 필드입니다. 주소 체계는 AF_INET (IPv4) 또는 AF_INET6 (IPv6) 등이 있습니다.
- `sa_data`: 주소 정보를 저장하는 필드입니다. 주소 체계에 따라 다양한 정보가 저장됩니다.
- `sin_port`: 소켓의 포트 번호를 저장하는 필드입니다.
- `sin_addr`: 소켓의 IP 주소를 저장하는 필드입니다.
예를 들어, IPv4 주소 구조체인 `struct sockaddr_in`은 다음과 같은 필드를 포함합니다.
#hostingforum.kr
c
struct sockaddr_in {
sa_family_t sin_family; // 주소 체계
in_port_t sin_port; // 소켓의 포트 번호
struct in_addr sin_addr; // 소켓의 IP 주소
};
`struct in_addr` 구조체는 다음과 같은 필드를 포함합니다.
#hostingforum.kr
c
struct in_addr {
uint32_t s_addr; // 소켓의 IP 주소
};
2025-06-13 04:26