【问题标题】:How can get Network ID of a subnet mask?如何获取子网掩码的网络 ID?
【发布时间】:2019-04-19 21:43:13
【问题描述】:

这是我的代码,我可以得到 IP 地址和子网掩码,

Dim strHostName As String
Dim strIPAddress As String
Dim strMsg = ""
strHostName = System.Net.Dns.GetHostName()
strIPAddress = "" ' System.Net.Dns.GetHostByName(strHostName).AddressList(0).ToString()
Dim iphe As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry(strHostName)

For Each ipheal As System.Net.IPAddress In iphe.AddressList
    If ipheal.AddressFamily = System.Net.Sockets.AddressFamily.InterNetwork Then
        strIPAddress = ipheal.ToString()

        For Each adapter As Net.NetworkInformation.NetworkInterface In Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
            For Each unicastIPAddressInformation As Net.NetworkInformation.UnicastIPAddressInformation In adapter.GetIPProperties().UnicastAddresses
                If unicastIPAddressInformation.Address.AddressFamily = Net.Sockets.AddressFamily.InterNetwork Then
                    If strIPAddress.Equals(unicastIPAddressInformation.Address.ToString ) Then
                        'Subnet Mask
                        Dim submark = unicastIPAddressInformation.IPv4Mask.ToString()    
                    End If
                End If
            Next
        Next
        Exit For
    End If
Next

我得到值 IP 地址=144.28.16.17 和子网掩码=255.255.240.0

如何获得如图所示的网络 ID?

【问题讨论】:

  • ip_address And subnet_mask?
  • 是的,有获取网络ID的功能吗?
  • network_id = ip_address And subnet_mask?
  • 是的。没错。
  • 144 And 255?..

标签: vb.net


【解决方案1】:

对于 IPv4,将 ip 转换为 nums,然后将 num 转换为 ip。像这样

    Dim ip As Net.IPAddress
    Dim mask As Net.IPAddress
    Dim netID As Net.IPAddress

    Dim strIP As String = "144.28.29.17"
    Dim strMask As String = "255.255.240.0"

    If Net.IPAddress.TryParse(strIP, ip) Then
        If Net.IPAddress.TryParse(strMask, mask) Then
            Dim inum As Integer = BitConverter.ToInt32(ip.GetAddressBytes, 0)
            Dim mnum As Integer = BitConverter.ToInt32(mask.GetAddressBytes, 0)
            inum = inum And mnum
            netID = New Net.IPAddress(BitConverter.GetBytes(inum))
        End If
    End If

【讨论】:

    猜你喜欢
    • 2016-08-25
    • 2014-08-24
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    • 2011-10-31
    • 2012-07-12
    • 2012-12-03
    • 1970-01-01
    相关资源
    最近更新 更多