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 | 31 |
Tags
- reactor
- 네트워크
- cache
- mongodb
- Elk
- 데이터통신
- reactive
- network
- javascript
- Heap
- redis
- spring
- Static
- libuv
- HTTP
- VCS
- NoSQL
- effective
- Java
- git
- github
- ajax
- r
- AWS
- mybatis
- nodejs
- socket
- html
- Lombok
- Linux
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