getaddrinfo()를 사용하면 호스트 없이 서비스를 지정할 수 있습니다. 이것이 무엇을 의미합니까?

getaddrinfo()를 사용하면 호스트 없이 서비스를 지정할 수 있습니다. 이것이 무엇을 의미합니까?

man getaddrinfo:

 int getaddrinfo(const char *node, const char *service,
                       const struct addrinfo *hints,
                       struct addrinfo **res);

노드나 서비스 중 하나(둘 다는 아님)가 NULL일 수 있습니다.

단지 지정 하고 특정 호스트와 관련된 사용 가능한 모든 서비스를 제공하는 것은 node이해할 수 있습니다 . 그런데 a를 지정하지 않고 a만 지정하면 service무슨 뜻인가요 node/host? 네트워크의 모든 호스트를 스캔하시겠습니까?

답변1

노드를 지정하면 하나의 특정 호스트와 관련된 사용 가능한 모든 서비스를 제공하는 것은 이해할 수 있습니다.

절대적으로하지. 서비스가 인 경우 NULL반환된 addrinfo구조의 포트/서비스는 로 설정됩니다 0.아니요호스트에서 사용 가능한 각 서비스에 대한 구조를 반환합니다.

하지만 노드/호스트가 아닌 서비스만 지정한다면 무슨 뜻일까요?

AI_PASSIVE에 지정되지 않은 경우 .ai_flags루프 장치의 주소를 반환합니다( 127.0.0.1ipv4의 경우, ::1ipv6의 경우).

지정된 경우 AI_PASSIVE"와일드카드" 주소( 0.0.0.0ipv4의 경우, ::ipv6의 경우)를 반환합니다.

전체 기사를 읽을 수 있습니다.기준AI_PASSIVE, "플래그가 지정되면..."으로 시작하는 단락에서

인용한 맨페이지에도 모든 것이 명확하게 설명되어 있습니다.

관련 정보