2013-10-21 3 views
0

네트워크 주소가 예 : - 192.168.74.0/24입니다. getaddrinfo를 사용하여 네트워크 주소 변환을 시도하면 작동하지 않습니다. 이름은 192.168.74.0/24입니다. getaddrindo의 반환 값은 -2입니다. 접두사가없는 ipv4 주소에서도 잘 작동합니다.getaddrinfo가 네트워크 주소로 작동하지 않습니다.

static const struct addrinfo hint = { 
      .ai_family = AF_UNSPEC, 
      .ai_flags = AI_NUMERICHOST 
    }; 
    struct addrinfo *ai; 
    int ret; 

    ret = getaddrinfo(name, NULL, &hint, &ai); 
    if (ret) { 
      printf("cannot parse '%s'", name); 
      return false; 
    } 
+7

192.168.74.0/24는 주소가 아닙니다. 네트워크 또는 주소 범위를 지정합니다. 'getaddrinfo '가 무엇을 반환 할 것으로 기대합니까? – Thanatos

답변

2

적어도 내 머리글 버전에서 -2는 EAI_NONAME, "이름 또는 서비스를 알 수 없음"입니다. 코드에서 변수 name에 무엇이 있는지 명확하지 않습니다. "192.168.74.0/24"문자열?

어쨌든, getaddrinfo의 문서에서 :

주어진 노드 및 서비스, 인터넷 호스트와 서비스를 식별 [...]

귀하의 입력은 인터넷 호스트를 식별하지 않습니다 ,하지만 전체 네트워크. 무엇을 성취하려고합니까?