示例#1
0
        public ipv4 AdresseReseau(ipv4 unMasque) // Méthode à appliquer à une adresse IP
        {
            ipv4 adrReseau = new ipv4();
            Byte octet1    = (Byte)(unMasque.GetOctet1() & _octet1);
            Byte octet2    = (Byte)(unMasque.GetOctet2() & _octet2);
            Byte octet3    = (Byte)(unMasque.GetOctet3() & _octet3);
            Byte octet4    = (Byte)(unMasque.GetOctet4() & _octet4);

            adrReseau.SetOctet1(octet1);
            adrReseau.SetOctet2(octet2);
            adrReseau.SetOctet3(octet3);
            adrReseau.SetOctet4(octet4);
            adrReseau.VersBinaire();
            unMasque.DonneCIDR();
            adrReseau.SetCIDR(unMasque.GetCIDR());
            return(adrReseau);
        }
示例#2
0
        static private ipv4 SaisieMasque()
        {
            String saisie;

            String[] abcd;
            String   elementA, elementB, elementC, elementD;

            String[] separateur  = new string[] { "." };
            ipv4     MasqueSaisi = new ipv4();
            Byte     unCIDR;
            Boolean  formatValide;
            Boolean  TypeEstCIDR = false;

            do // Cette boucle fait saisir à l'utilisateur un masque dans un format valide (CIDR ou décimal pointé)
            {
                formatValide = true;
                Console.Write("Masque / CIDR :\t\t\t");
                saisie = SaisieEnVert();
                int index = saisie.IndexOf('/');
                if (index == 0)
                {
                    saisie = saisie.Substring(1);
                }
                if (Byte.TryParse(saisie, out unCIDR) && unCIDR < 33) // L'utilisateur saisit directement un CIDR (nombre compris entre 0 et 32)
                {
                    TypeEstCIDR = true;
                }
                else // L'utilisateur rentre un masque en notation décimale pointée... ou tout autre chose
                {
                    try
                    {
                        abcd        = saisie.Split(separateur, 4, StringSplitOptions.None);
                        elementA    = abcd[0];
                        elementB    = abcd[1];
                        elementC    = abcd[2];
                        elementD    = abcd[3];
                        MasqueSaisi = new ipv4(Byte.Parse(elementA), Byte.Parse(elementB), Byte.Parse(elementC), Byte.Parse(elementD));
                    }
                    catch (FormatException)
                    {
                        formatValide = false;
                    }
                    catch (IndexOutOfRangeException)
                    {
                        formatValide = false;
                    }
                    catch (OverflowException)
                    {
                        formatValide = false;
                    }
                    finally
                    {
                        if (formatValide)
                        {
                            Int32 resteOctetA, resteOctetB, resteOctetC, resteOctetD;
                            resteOctetA = 256 - MasqueSaisi.GetOctet1();
                            resteOctetB = 256 - MasqueSaisi.GetOctet2();
                            resteOctetC = 256 - MasqueSaisi.GetOctet3();
                            resteOctetD = 256 - MasqueSaisi.GetOctet4();

                            if (!(EstPuissanceDeDeux(resteOctetA) && EstPuissanceDeDeux(resteOctetB) && EstPuissanceDeDeux(resteOctetC) && EstPuissanceDeDeux(resteOctetD)))
                            {
                                formatValide = false;
                            }
                        }
                    }
                }
                if (TypeEstCIDR) // Si l'utilisateur a rentré un CIDR
                {
                    StringBuilder unMasqueBinaire = new StringBuilder();
                    for (Byte i = 0; i < 32; i++)
                    {
                        if (i != 0 && i != 31 && (i + 1) % 8 == 0)
                        {
                            if (i < unCIDR)
                            {
                                unMasqueBinaire.Append("1");
                                unMasqueBinaire.Append(".");
                            }
                            else
                            {
                                unMasqueBinaire.Append("0");
                                unMasqueBinaire.Append(".");
                            }
                        }
                        else
                        {
                            if (i < unCIDR)
                            {
                                unMasqueBinaire.Append("1");
                            }
                            else
                            {
                                unMasqueBinaire.Append("0");
                            }
                        }
                    }
                    abcd        = unMasqueBinaire.ToString().Split(separateur, 8, StringSplitOptions.None);
                    elementA    = Convert.ToByte(abcd[0], 2).ToString();
                    elementB    = Convert.ToByte(abcd[1], 2).ToString();
                    elementC    = Convert.ToByte(abcd[2], 2).ToString();
                    elementD    = Convert.ToByte(abcd[3], 2).ToString();
                    MasqueSaisi = new ipv4(Byte.Parse(elementA), Byte.Parse(elementB), Byte.Parse(elementC), Byte.Parse(elementD));
                }
                if (!formatValide)
                {
                    SaisieInvalide();
                }
            } while (!formatValide);
            return(MasqueSaisi);
        }