hostent 구조체, 도메인 관련 API
1. hostent 구조체
struct hostent
{
char *h_name; //공식 도메인 이름
char **h_aliases; //공식 이외 도메인 이름들
int h_addrtype; //주소정보 체계(IPv4: AF_INET, IPv6: AF_INET6)
int h_length; //IP주소의 크기를 담는다. (IPv4는 4)
char **h_addr_list; //도메인 이름에 대한 IP주소가 정수 형태로 반환될 때 이 멤버 변수를 이용
}
* 예제
2. 도메인 관련 API
#include <netdb.h>
아래 함수들을 호출하면 소켓 라이브러리가 DNS서버에 조회하여 IP주소나 도메인명을 찾는 기능을 제공한다. 이와같은 정보를 hostent 구조체에 담아서 반환해주는 것이다. 개발자가 IP주소를 알아내기위해 별도로 구현할 것이없다.. (그래도 원리는 알아야겠죠!?ㅋㅋㅋ)
2-1. 도메인 네임 → IP주소로 변환
struct hostent *gethostbyname(const char *hostname);
2-1-1. 반환값
성공 = hostent 구조체 변수의 주소 값, 실패 = null 포인터 반환
2-1-2. 인자
- hostname: 도메인명을 담은 문자배열 전달
2-2. IP주소 → 도메인 네임으로 변환
struct hostent *gethostbyaddr(const char *addr, socket_t len, int family);
2-2-1. 반환값
성공 = hostent 구조체 변수의 주소 값, 실패 = null 포인터 반환
2-2-2. 인자
- addr: IP주소를 갖는 in_addr 구조체 변수의 포인터 전달(char *인 이유는 IPv4이외에도 다양한 주소를 받는 상황을 위하여)
- len: 첫번째 인자의 길이 전달(IPv4: 4, IPv6: 16)
- family: 주소정보 체계 전달(IPv4: AF_INET, IPv6: AF_INET6)
출처: https://sjh836.tistory.com/50?category=680969 [빨간색코딩]
'기타 > C언어' 카테고리의 다른 글
make 유틸리티 (0) | 2021.03.22 |
---|---|
소켓 옵션과 관련 API (0) | 2021.03.22 |
TCP소켓 Half-close 기법 (0) | 2021.03.22 |
(UDP소켓 프로그래밍) socket.h API, connected UDP소켓 (0) | 2021.03.22 |
표준 스트림 (표준출력과 표준오류의 차이) (0) | 2021.03.22 |
구조체의 메모리 저장방식 (0) | 2021.03.22 |
(TCP소켓 프로그래밍) socket.h API, 네트워크 바이트 순서 (0) | 2021.03.22 |
[C] 퀵정렬 예제 정리 (0) | 2019.07.26 |