2017-06-26 15 views
0

どのようにしてネットワークのサブネット範囲を取得できますか?たとえば、私のipは192.168.1.23です。ネットワークサブネット範囲のネットワーク内には192.168.1.0 - 255があります.C#またはその他のライブラリを使用してこれを提供する方法はありますか?
- 私はいくつかの共通のローカルIPアドレスにいくつかのswichを作ろうとしましたが、その数は構造化されている方法に依存しているため、まだ生産では使用できません。
- 私はいくつかの役立つ解決策を探してみましたが、役に立ったと思われるトピックは見つかりませんでしたc#サブネットネットワークのIPアドレスを取得

ありがとうございました。

+0

ネットワークにはIPアドレスがありません。ゲートウェイIPですか?またはサブネット範囲? – Crowcoder

+0

@Crowcoderはいサブネット範囲 –

+0

この回答を確認するhttps://stackoverflow.com/questions/13901436/how-to-get-subnet-mask-using-net – Crowcoder

答えて

2
public static class IPAddressExtensions 
{ 
    public static IPAddress GetBroadcastAddress(this IPAddress address, IPAddress subnetMask) 
    { 
     byte[] ipAdressBytes = address.GetAddressBytes(); 
     byte[] subnetMaskBytes = subnetMask.GetAddressBytes(); 

     if (ipAdressBytes.Length != subnetMaskBytes.Length) 
      throw new ArgumentException("Lengths of IP address and subnet mask do not match."); 

     byte[] broadcastAddress = new byte[ipAdressBytes.Length]; 
     for (int i = 0; i < broadcastAddress.Length; i++) 
     { 
      broadcastAddress[i] = (byte)(ipAdressBytes[i] | (subnetMaskBytes[i]^255)); 
     } 
     return new IPAddress(broadcastAddress); 
    } 

    public static IPAddress GetNetworkAddress(this IPAddress address, IPAddress subnetMask) 
    { 
     byte[] ipAdressBytes = address.GetAddressBytes(); 
     byte[] subnetMaskBytes = subnetMask.GetAddressBytes(); 

     if (ipAdressBytes.Length != subnetMaskBytes.Length) 
      throw new ArgumentException("Lengths of IP address and subnet mask do not match."); 

     byte[] broadcastAddress = new byte[ipAdressBytes.Length]; 
     for (int i = 0; i < broadcastAddress.Length; i++) 
     { 
      broadcastAddress[i] = (byte)(ipAdressBytes[i] & (subnetMaskBytes[i])); 
     } 
     return new IPAddress(broadcastAddress); 
    } 

    public static bool IsInSameSubnet(this IPAddress address2, IPAddress address, IPAddress subnetMask) 
    { 
     IPAddress network1 = address.GetNetworkAddress(subnetMask); 
     IPAddress network2 = address2.GetNetworkAddress(subnetMask); 

     return network1.Equals(network2); 
    } 
} 
+1

他の場所から回答を取る場合は人々が著者に感謝できるように、あなたのソースを挙げるべきです。 https://blogs.msdn.microsoft.com/knom/2008/12/31/ip-address-calculations-with-c-subnetmasks-networks –

関連する問題