Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- github
- nodejs
- VCS
- r
- Elk
- mongodb
- 데이터통신
- html
- javascript
- ajax
- spring
- mybatis
- reactor
- 네트워크
- redis
- Static
- cache
- socket
- reactive
- AWS
- Java
- NoSQL
- Linux
- network
- effective
- git
- Heap
- Lombok
- HTTP
- libuv
Archives
- Today
- Total
빨간색코딩
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)
'C' 카테고리의 다른 글
make 유틸리티 (0) | 2017.05.20 |
---|---|
소켓 옵션과 관련 API (0) | 2017.04.04 |
아두이노 bluetooth (0) | 2017.04.02 |
아두이노 Digita I/O & Analog I/O (0) | 2017.04.02 |
TCP소켓 Half-close 기법 (0) | 2017.03.28 |
Comments