자기 자신의 IP 주소를 나타내는 32비트 정수형 상수이다. 서버 프로그램의 경우 이 상수를 사용하면 별도의 IP 주소를 입력하지 않아도 되서 편리하다. 주로 htonl을 사용하여 네트워크 바이트 순서로 변환한 후 sockaddr_in의 sin_addr로 전달하는데 사용한다.

#include <netinet/in.h>
 
struct sockaddr_in addr;
addr.sin_addr.s_addr = htonl(INADDR_ANY);

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

서버 소켓은 생성 시 자신이 속한 컴퓨터의 IP 주소로 초기화가 이뤄져야 한다.
즉 초기화할 IP 주소가 뻔하므로 시스템 콜이 이러한 작업을 처리하면 편리할 것 같다는 생각이 든다.
그러나 IP 주소는 컴퓨터에 장착되어 있는 NIC(랜카드)의 개수만큼 부여가 가능하므로 하나의 컴퓨터가 복수의 IP를 보유할 수 있다. 그러므로 이러한 경우에는 서버 소켓이라 할지라도 어느 IP 주소로 들어오는(어느 NIC로 들어오는) 데이터를 수신할지 결정해야 한다.
때문에 서버 소켓의 초기화 과정에서 IP 주소 정보를 요구하는 것이다. 반면 NIC가 하나뿐인 컴퓨터라면 주저 없이 INADDR_ANY를 사용해서 초기화하는 것이 편리하다.


참고자료

윤성우의_열혈_TCP_IP_소켓_프로그래밍