소켓 프로그래밍을 할 때 socket()함수에서는 PF_INET으로 ipv4 프로토콜을 표현하고 struct sockaddr_in 의 sin_family에는 AF_INET으로 ipv4를 표현했었습니다.
그런데 PF_INET와 AF_INET의 차이는 무엇일까요?
socket(PF_INET, ~~, ~~);
struct sockaddr_in의 sin_family멤버에 = AF_INET
리눅스에서 아래와 같은 프로그램을 만들어서 실행해보면
#include <stdio.h>
#include <sys/socket.h>
int main()
{
printf("PF_INET : %d \n", PF_INET);
printf("AF_INET : %d \n", AF_INET);
}
PF_INET와 AF_INET 둘다 2라는 상수를 가지는 것을 확인 할 수 있습니다.
그래서 실제로 PF_INET와 AF_INET을 바꿔서도 차이는 없습니다. 다만 형식적으로
프로토콜 체계를 표현할 때는 PF_INET을 사용하고
주소 체계를 표현할 때는 AF_INET을 사용합니다.
프로그램 작동에서의 차이는 없으나 형식적으로 명시되어 있으므로
프로토콜 체계를 표현할 때는 PF_INET
주소 체계를 표현할 때는 AF_INET를 사용하는 것 입니다..
프로토콜 체계 |
정의 |
PF_INET |
IPv4인터넷 프로토콜 |
PF_INET6 | IPv6인터넷 프로토콜 |
PF_LOCAL |
LOCAL 통신을 위한 UNIX 프로토콜 |
PF_PACKET |
Low level socket을 위한 인터페이스 |
PF_IPX |
IPX 노벨 프로토콜 |
주소 체계 |
정의 |
AF_INET |
IPv4인터넷 프로토콜 |
AF_INET6 |
IPv6인터넷 프로토콜 |
AF_LOCAL | LOCAL 통신을 위한 UNIX 프로토콜 |
'Programming > C/C++' 카테고리의 다른 글
프로그램 종료2 - atexit(), _exit() (0) | 2012.05.03 |
---|---|
프로그램 종료 - assert(), exit(), abort() (0) | 2012.05.02 |
헤더파일 중복 방지( inclusion guard / #pragma once ) (0) | 2012.04.23 |
cin.fail cin.clear cin.ignore (3) | 2012.04.20 |
c++ 파일 입출력 (fstream) (0) | 2012.04.07 |