2016-12-20 4 views
0

J'ai deux ipaddress - d'abord et dernière dans la gamme. Comment obtenir un masque de réseau?C# - Comment obtenir un masque de réseau par deux adresses IP connues?

Exemple: 123.45.67.5 - 123.45.67.15 - valeurs connues

Réponse: 255.255.255.128 - Je veux obtenir cette valeur (netmask).

+1

bonne. laissez-nous savoir quand vous le faites. – Badiparmagi

+0

Le masque de réseau est 255.255.255.240, pas 128 si vous le faites dans le code. – jdweng

+0

@jdweng, oui, 240. C'est mon erreur. – pHabb

Répondre

0

obtenu le code correct sur 1ère tentative

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 


namespace ConsoleApplication33 
{ 

    class Program 
    { 

     static void Main(string[] args) 
     { 
      string ip1 = "123.45.67.5"; 
      string ip2 = "123.45.67.15"; 


      string mask = GetMask(ip1, ip2); 

     } 

     static string GetMask(string ip1, string ip2) 
     { 
      int[] ip1Array = ip1.Split(new char[] { '.' }).Select(x => int.Parse(x)).ToArray(); 
      int[] ip2Array = ip2.Split(new char[] { '.' }).Select(x => int.Parse(x)).ToArray(); 
      int[] mask = new int[] { 0, 0, 0, 0 }; 
      Boolean done = false; 
      for (int i = 0; i < 4; i++) 
      { 
       for (int j = 7; j >= 0; j--) 
       { 
        if ((ip1Array[i] & (1 << j)) == (ip2Array[i] & (1 << j))) 
        { 
         mask[i] |= (1 << j); 
        } 
        else 
        { 
         done = true; 
         break; 
        } 
       } 
       if (done) break; 
      } 



      return string.Join(".", mask); 
     } 
    } 


} 
+0

TOUS LES TRAVAUX JUSTE !!! MERCI, @jdweng! – pHabb

+0

problème résolu. @Badiparmagi, voir la solution de ce commentaire. – pHabb