2015년 5월 24일 일요일

네트워크 소켓 프로그래밍 시 INADDR_ANY의 의미



INADDR_ANY는 #define를 통해 0으로 설정되어 있습니다.


INADDR_ANY는 자동으로 이 컴퓨터에 존재하는 랜카드 중 사용가능한 랜카드의 IP주소를 사용하라는 의미입니다.


"어? 그러면 그냥 내가 가지고 있는 IP주소를 입력해도 되지 않나요?"


라고 생각하실 탠데 약간 더 중요한 의미가 하나 더 있습니다.


예를들어 내 컴퓨터는 총 2개의 랜카드가 설치되어 있고 각각의 ip주소가 아래와 같다고 가정합시다.


랜카드1 : 192.168.0.100
랜카드2 : 192.168.0.200


내 컴퓨터는 총 2개의 ip주소를 가지고 있으므로 외부에서 192.168.0.100으로 데이터를 보내건, 192.168.0.200으로 데이터를 보내건 내 컴퓨터로 오는건 똑같습니다.


하지만 프로그램은 약간 다릅니다. 내가 만든 프로그램에 ip주소를 192.168.0.100으로 등록해 뒀다면 192.168.0.200으로 들어오는 데이터는 받지 않습니다.


즉, 어차피 같은 컴퓨터임에도 불구하고 ip주소가 다르면 처리를 못한다는 의미입니다.


이때, INADDR_ANY를 사용하면 192.168.0.100으로 들어오건, 192.168.0.200으로 들어오건 모두 똑같이 처리할 수 있습니다.


만약, 내가 만드는 프로그램은 무조건 192.168.0.100으로 들어온 접속만 처리해야된다 하시면 INADDR_ANY를 사용하시면 안되고 192.168.0.100으로 명시적으로 설정해 주셔야 합니다.

댓글 없음:

댓글 쓰기