Итерация по диапазону IP-адресов
Мне нужен элегантный способ использования VB.Net для перебора диапазона IP-адресов, когда входные данные поступят в мое приложение в виде строки в следующем формате:
192.168.100.8-10
Этот диапазон будет включать 3 адреса:
192.168.100.8, 192.168.100.9, 192.168.100.10.
Я нашел решение в C#, которое использует класс IP-адресов, который я, вероятно, мог бы преобразовать в VB, но мне показалось, что это слишком много кода для того, что мне нужно сделать. Я определенно мог бы использовать множество функций разбора строк, но я надеялся, что у кого-то уже есть простой способ сделать это.
1 ответ
Решение
Вот решение. Было бы еще проще использовать общие списки...
Dim arrFinalIpList() As String
Dim strIP As String = "192.168.100.8-10"
Dim arrIP() As String = strIP.Split(".")
Dim strPrefix As String = arrIP(0) & "." & arrIP(1) & "." & arrIP(2) & "."
Dim arrMinAndMax() As String = arrIP(3).Split("-")
Dim intCursor As Integer = 0
For intCursor = CInt(arrMinAndMax(0)) To CInt(arrMinAndMax(1))
If arrFinalIpList Is Nothing Then
ReDim arrFinalIpList(0)
arrFinalIpList(0) = strPrefix & intCursor.ToString()
Else
ReDim Preserve arrFinalIpList(arrFinalIpList.Count)
arrFinalIpList(arrFinalIpList.Count - 1) = strPrefix & intCursor.ToString()
End If
Next