Vì vậy, tôi đã thấy rất nhiều ví dụ trực tuyến chỉ ra cách lấy IP đầy đủ nếu bạn biết IP bắt đầu và IP kết thúc, nhưng điều tôi cần là được cho biết phạm vi IP đầy đủ sau khi cung cấp cho nó IP bắt đầu và IP bắt buộc. Mã cho số lượng địa chỉ IP.
Vì vậy, ví dụ: nếu tôi cung cấp địa chỉ IP 192.168.0.1 làm IP bắt đầu và số lượng IP được yêu cầu là 60 thì kết quả sẽ được trả về
IP bắt đầu = 192.168.0.1
CuốiIP = 192.168.0.61
Số IP = 60
Tôi đã xem thư viện IPNetwork nhưng thư viện đó yêu cầu sử dụng CIDR mà chúng tôi không sử dụng.
biên tập:
Những gì tôi đã thử là như sau.
Tôi đã thử IPNetwork và khi sử dụng nó yêu cầu CIDR Như đã đề cập ở trên, chúng tôi không sử dụng CIDR nên điều này không mang lại lợi ích gì cho tôi.
Cách cơ bản nhất mà tôi nghĩ đến là thêm octet cuối cùng vào số đó, vậy nếu octet cuối cùng là 2 và số IP là 60 thì octet cuối cùng mới là 62. Thật đơn giản, nhưng khi octet cuối cùng là khoảng 200 và số IP cần thiết là 70, chúng ta không thể thêm vào octet cuối cùng vì octet cuối cùng sẽ là 270 vì bạn không thể vượt quá 255, vì vậy có một Bây giờ làm thế nào để tính toán IP đó thực sự là một câu hỏi khác. Theo như mã tôi đã thử, ở đây ít được sử dụng vì nó được chứng minh là hoàn toàn sai hướng kể từ khi tôi tìm thấy câu hỏi được đề cập ở trên. Tôi không tìm kiếm ai đó viết mã trực tiếp cho mình, tôi có thể viết mã cho riêng mình, nhưng tôi hy vọng ai đó có thể giúp tôi đi đúng hướng trong tương lai. Thật không may, tôi chưa bao giờ là một trong những địa chỉ IP đó. Tôi đã dành một thời gian ngắn ở trường để học cách tính địa chỉ IP. Chuyện đó đã xảy ra cách đây 14 năm và chỉ bằng một phần nhỏ của một học kỳ.
Bạn có thể phân tích địa chỉ IP thành giá trị 32 bit (vì đó là giá trị thực sự của nó) và sau đó bạn có thể dễ dàng lặp qua một phạm vi và tạo địa chỉ IP cho chúng.
Chuyển đổi:
uint tĩnh công khai ParseIP (chuỗi ip) {
byte[] b = ip.Split('.').Select(s => Byte.Parse(s)).ToArray();
if (BitConverter.IsLittleEndian) Array.Reverse(b);
trả về BitConverter.ToUInt32(b, 0);
}
chuỗi tĩnh công khai FormatIP(uint ip) {
byte[] b = BitConverter.GetBytes(ip);
if (BitConverter.IsLittleEndian) Array.Reverse(b);
return String.Join(".", b.Select(n => n.ToString()));
}
Tạo một phạm vi:
chuỗi StartIP = "192.168.0.1";
int IPCount = 61;
uint n = ParseIP("192.168.0.1");
chuỗi [] phạm vi = chuỗi mới [IPCount];
for (uint i = 0; i < IPCount; i++) {
phạm vi [i] = FormatIP(n + i);
}
Tôi là một lập trình viên xuất sắc, rất giỏi!