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.1
ipv4의 경우, ::1
ipv6의 경우).
지정된 경우 AI_PASSIVE
"와일드카드" 주소( 0.0.0.0
ipv4의 경우, ::
ipv6의 경우)를 반환합니다.
전체 기사를 읽을 수 있습니다.기준AI_PASSIVE
, "플래그가 지정되면..."으로 시작하는 단락에서
인용한 맨페이지에도 모든 것이 명확하게 설명되어 있습니다.