본문 바로가기

프로그래밍/Server

소켓 정보

int getaddrinfo( const char* host, const char* service, const struct addrinfo* hints, struct addrinfo** result );

host, service, hints 값을 입력으로 받는다.

addrinfo 구조체의 링크드리스트를 동적으로 할당하고 result가 이 리스트의 시작 부분을 가리키도록 설정한다.

addrinfo 구조체는 해당 호스트와 서비스를 가리키는 소켓 포인터를 반환한다.

 

struct addrinfo {
    int ai_flags;
    int ai_family;
    int ai_socktype;
    int ai_protocol;
    size_t ai_addrlen;
    char* ai_canonname; // 공식 호스트명
    struct sockaddr* ai_addr // 소켓 주소를 가리키는 포인트
    struct addrinfo* ai_next; // 다음 구조체 .. 링크드리스트
}

 

 

 

getaddrinfo 함수는  result가 가리키는 모든 구조체 메모리를 동적으로 할당한다.

freeaddrinfo() 함수를 이용하면 단번에 메모리를 해제 할 수 있다.

void freeaddrinfo(struct addrinfo* result);

 

에러 메시지 문자열을 가리키는 포인터를 리턴한다.

const char* gai_strerror(int errcode);

 

getnameinfo() 는 getaddrinfo() 와 정반대 기능을 수행한다.

소켓을 받아서 호스트명과 서비스명 문자열을 리턴하거나, 해석 불가일 경우 숫자 표현을 그대로 리턴한다.

 

 

 

'프로그래밍 > Server' 카테고리의 다른 글

소켓 : 고급 옵션  (0) 2013.03.23
소켓 : 서버 설계  (0) 2013.03.23
DNS  (0) 2013.03.21
소켓 실행파일  (0) 2013.03.21
TCP/IP 네트워크 기초 - TCP  (0) 2013.03.21