2013-11-01 76 views
-1

我需要幫助,在接收兩個參數的C/C++寫一個函數:IP地址子網掩碼函數返回的IP地址列表對於給定的IP地址和子網掩碼

該功能需要重新建立關聯網絡中所有IP地址的列表。

例如: 給定兩個參數:IP地址 = 192.168.33.72和面具 = 255.255.255.192 該函數將返回包含列表中的IP的192.168.33.65到192.168.33.126。

+1

著名的評論:什麼你有沒有嘗試過? – MOHAMED

回答

3

1)首先,您可以將ipaddresssubnetmask從字符串格式轉換爲inet_pton()的二進制格式。

2)使上subnetmask檢查掩蓋它應該是一個有效的子網掩碼

3)獲得subnetmask逆值(~subnetmask

4)

for (i=1; i<(~subnetmask); i++) { 

    ip = ipaddress & (subnetmask + i); 

    //append ip to your ip list 

} 
+0

沒有什麼說一個子網掩碼不能有LSB設置......在這種情況下,你的代碼會產生一堆無效的IP地址。 – Floris

+0

@弗洛伊什麼LSB是什麼意思?是指子網掩碼二進制格式的第一位? – MOHAMED

+0

LSB =最低有效位。想象一下掩碼是255.255.255.193--看看你的代碼中發生了什麼。 – Floris