Beispiel #1
0
        static private ipv4 SaisieIPv4()
        {
            String saisie;

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

            String[] separateur   = new string[] { "." };
            ipv4     IPsaisie     = new ipv4();
            Boolean  formatValide = true;

            do
            {
                formatValide = true;
                Console.Write("Adresse (hôte ou réseau) :\t");
                saisie = SaisieEnVert();

                try
                {
                    abcd     = saisie.Split(separateur, 4, StringSplitOptions.None);
                    elementA = abcd[0];
                    elementB = abcd[1];
                    elementC = abcd[2];
                    elementD = abcd[3];
                    IPsaisie = 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)
                    {
                        SaisieInvalide();
                    }
                }
            } while (!formatValide);
            return(IPsaisie);
        }
Beispiel #2
0
        public ipv4 AdresseDiffusion(ipv4 uneAdresseReseau)
        {
            ipv4   adrDiffusion = new ipv4();
            String chaineAdresseReseau = String.Concat(uneAdresseReseau.GetOctetBin1(), uneAdresseReseau.GetOctetBin2(), uneAdresseReseau.GetOctetBin3(), uneAdresseReseau.GetOctetBin4());
            int    nbBitsReseau = uneAdresseReseau.GetCIDR();
            String binAdrDiffusion, binDiffBitsReseau;

            binDiffBitsReseau = chaineAdresseReseau.Substring(0, nbBitsReseau);
            binAdrDiffusion   = binDiffBitsReseau.PadRight(32, '1');
            adrDiffusion.SetOctet1(Convert.ToByte(binAdrDiffusion.Substring(0, 8), 2));
            adrDiffusion.SetOctet2(Convert.ToByte(binAdrDiffusion.Substring(8, 8), 2));
            adrDiffusion.SetOctet3(Convert.ToByte(binAdrDiffusion.Substring(16, 8), 2));
            adrDiffusion.SetOctet4(Convert.ToByte(binAdrDiffusion.Substring(24, 8), 2));
            adrDiffusion.VersBinaire();
            return(adrDiffusion);
        }
Beispiel #3
0
        public ipv4 AdresseDernierHote(ipv4 uneAdresseReseau)
        {
            ipv4   adrDernierHote = new ipv4();
            String chaineAdresseReseau = String.Concat(uneAdresseReseau.GetOctetBin1(), uneAdresseReseau.GetOctetBin2(), uneAdresseReseau.GetOctetBin3(), uneAdresseReseau.GetOctetBin4());
            int    nbBitsReseau = uneAdresseReseau.GetCIDR();
            String binAdrDernierHote, binDernierHoteBitsReseau;

            binDernierHoteBitsReseau = chaineAdresseReseau.Substring(0, nbBitsReseau);
            binAdrDernierHote        = binDernierHoteBitsReseau.PadRight(31, '1').PadRight(32, '0');
            adrDernierHote.SetOctet1(Convert.ToByte(binAdrDernierHote.Substring(0, 8), 2));
            adrDernierHote.SetOctet2(Convert.ToByte(binAdrDernierHote.Substring(8, 8), 2));
            adrDernierHote.SetOctet3(Convert.ToByte(binAdrDernierHote.Substring(16, 8), 2));
            adrDernierHote.SetOctet4(Convert.ToByte(binAdrDernierHote.Substring(24, 8), 2));
            adrDernierHote.VersBinaire();
            return(adrDernierHote);
        }
Beispiel #4
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);
        }
Beispiel #5
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);
        }