반응형

INADDR_ANY

 

 

서버 소켓의 생성과정에서 매번 서버의 IP주소를 입력하는 것은 매우 귀찮은 일이다.

 

그렇다면 아래의 사진처럼 주소 정보를 초기화해도 된다.

 

-

 

 

-

 

앞서 배웠던 방식과의 큰 차이는 없지만, INADDR_ANY라는 이름의 상수를 통해서

 

서버의 IP주소를 할당하고 있다는 점이다.

 

소켓의 IP주소를 이렇게 초기화할 경우 소켓이 동작하는 컴퓨터의 IP주소가 자동으로 할당되기 때문에

 

IP주소를 입력하는 귀찮음을 없앨 수 있다.

 

뿐만 아니라, 컴퓨터 내에 두 개 이상의 IP를 할당받아서 사용하는 경우

 

(이 경우를 Multi-homed 컴퓨터라 하며, 일반적으로 라우터가 이에 해당한다.)

 

할당받은 IP 중 어떤 주소를 통해서 데이터가 들어오더라도 PORT번호만 일치하면 수신할 수 있다.

 

따라서 서버 프로그램의 구현에 많이 선호되는 방법이다.

 

반대로 클라이언트가 서버의 기능을 일부 포함하는 경우가 아니라면

 

클라이언트 프로그램의 구현에서는 사용될 일이 별로 없다.

 

-

 

 ※ 서버 소켓 생성 시 IP주소가 필요한 이유 

 

 

서버 소켓은 생성 시 자신이 속한 컴퓨터의 IP주소로 초기화가 이뤄져야 한다.

 

하나의 컴퓨터에 둘 이상의 IP주소가 할당될 수 있다는 사실을 통해 이 부분을 이해할 수 있다.

 

IP주소 컴퓨터에 장착되어 있는 NIC(랜카드)의 개수만큼 부여가 가능하다.

 

그리고 이러한 경우에는 서버 소켓이라 해도 어느 IP주소로 들어오는(어느 NIC로 들어오는)

 

데이터를 수신할지 결정해야 한다.

 

그렇기에 서버 소켓의 초기화 과정에서 IP주소 정보를 요구하는 것이다.

 

반면 NIC이 하나뿐인 컴퓨터라면 주저 없이 INADDR_ANY를 이용해서 초기화하는 것이 편하다.

반응형

+ Recent posts