2013-10-21 54 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文件:

給定節點和服務,其標識Internet主機和服務[...]

您的輸入無法識別的互聯網主機,但整個網絡。你想達到什麼目的?