Ip-Berechnung

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von BornToBeRoot.

    Ip-Berechnung

    Hi,

    ich möchte anhand einer IP mit Suffix(bsp. 111.222.121.212/17) die Netzwerkadresse und Broadcastadresse ermitteln, wie auch die anzahl der möglichen Hosts. Das funktioniert mit diesem Code:

    VB.NET-Quellcode

    1. Private Sub CalcIt()
    2. '111.222.121.212/17
    3. Dim address As New Net.IPAddress({111, 222, 121, 212})
    4. Dim netMaskInt As Integer = 0
    5. Dim suffix As Integer = 17
    6. For i = 31 To 32 - suffix Step -1
    7. netMaskInt = netMaskInt Or (1 << i)
    8. Next
    9. Dim netMask() As Byte = BitConverter.GetBytes(netMaskInt).Reverse.ToArray()
    10. Dim netWork(3) As Byte
    11. For i = 0 To 3
    12. netWork(i) = address.GetAddressBytes()(i) And netMask(i)
    13. Next
    14. Dim broadCast(3) As Byte
    15. For i = 0 To 3
    16. broadCast(i) = address.GetAddressBytes()(i) Or Not netMask(i)
    17. Next
    18. Dim netWorkIp As New Net.IPAddress(netWork)
    19. Dim broadCastIp As New Net.IPAddress(broadCast)
    20. Debug.WriteLine("netWork: " & netWorkIp.ToString())
    21. Debug.WriteLine("broadCast: " & broadCastIp.ToString())
    22. Debug.WriteLine("maxHosts: " & netMaskInt * -1 - 2)
    23. End Sub


    Kann man das vereinfachen? Gibt es etwas dafür im Framework?
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „NoIde“ ()

    das mit dem Framework weiß ich nicht, das einzige was mir auf dem ersten Blick auffällt ist folgendes:

    VB.NET-Quellcode

    1. Dim netWork(3) As Byte
    2. For i = 0 To 3
    3. netWork(i) = address.GetAddressBytes()(i) And netMask(i)
    4. Next
    5. Dim broadCast(3) As Byte
    6. For i = 0 To 3
    7. broadCast(i) = address.GetAddressBytes()(i) Or Not netMask(i)
    8. Next


    lässt sich in

    VB.NET-Quellcode

    1. Dim netWork(3) As Byte
    2. Dim broadCast(3) As Byte
    3. For i = 0 To 3
    4. netWork(i) = address.GetAddressBytes()(i) And netMask(i)
    5. broadCast(i) = address.GetAddressBytes()(i) Or Not netMask(i)
    6. Next


    kürzen

    LG, Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Ja, da hast du recht. Sollte mir eigendlich peinlich sein, das ich das Beispiel mit redundanter Schleife so gepostet hab. Vllt. kennt ja noch jemand etwas aus dem FW für solch einen Zweck. So mächtig wie das FW ist, wäre es schon wunderlich, wenn es da nichts prepariertes für gäbe.
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin
    Hab das ganze für meinen NETworkManager auch gemacht.

    Vielleicht hilft dir dieser code weiter:
    github.com/BornToBeRoot/NETwor…/Models/Network/Subnet.cs

    Oder in PowerShell (der code ist eigentlich identisch, ohne verweis auf andere klassen usw.)
    github.com/BornToBeRoot/PowerS…etwork/Get-IPv4Subnet.ps1
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!