시스템프로그래밍 시험 공부를 하다가 bind()에서 INADDR_ANY를 사용하는 코드를 배우게 되었다.
예약어인 것인지 앞에서 특별한 선언 없이 이 변수를 바로 사용하고 교수님께서도 어디서 들어오든지 다 받겠다는 뜻이라고만 설명해주셔서, 이 INADDR_ANY가 내가 아는 0.0.0.0이랑 같은 것인지 궁금해졌다.
(별 것 아니긴 하지만 그냥 이 강의자료에만 추가로 적기에는 조금 아까워서 블로그에도 남겨본다.)
코드는 다음과 같다.
#define SIZE sizeof(struct sockaddr_in)
int main()
{
int sock1;
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = 5000;
addr.sin_addr.s_addr = INADDR_ANY; // 어떤 IP주소에서 들어오든지 다 받겠다.
...
(후략)
결론부터 말하자면 같다!
좋은 글을 찾게 되어서 인용을 해보겠다.
0x00000000 으로 선언되어 있다.0.0.0.0을 가리킴0이나 127로 시작하는 IP주소는 A 클래스에 속해야 하지만, 예약으로 인해 제외되어 있다.0.0.0.0은 임의로 자신의 IP를 가리키게 됨.0.0.0.0으로 선언하면 자신의 호스트에 들어오는 패킷을 무조건 수신127로 시작하는 IP주소의 대표적인 예 - 127.0.0.1 (루프백 주소)출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=no1rogue&logNo=30096947717