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); }
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); }
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); }
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); }
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); }