Sortir une adresse Ip aléatoire pour base de données

Bonjour bonjour,

En tant que “novice” (ça fait 3 ans que j’essaye de faire quelque chose en informatique!!!), je voulais avoir 2-3 renseignements (enfin, je ne les ai pas compter…):D.
Probleme:

J’ai un utilisateurs, il peut choisir une adresse IP automatiquement (donc la machine lui sort une adresse IP) ou manuellement.
J’ai réussi à traiter l’option manuel:
Code qui permet de vérifier si l’entrée de l’utilisateur est bonne


// attention, c'est du haut niveau...
function verif()
	{
		var expr = /^(((22[4-9]|23[0-9])\.)((25[0-4]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])\.)((25[0-4]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.)((25[0-4]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9]))$)/;
		var chaine = document.getElementById('adrMan').value ; //j'aimerais pouvoir récupérer ce que l'utilisateur à entrer....
		if(!expr.exec(chaine))
			{
			alert('adresse non valide : sélectionnez une adresse entre 224.0.1.0 et 239.254.254.254');
 			champ.focus();
			}
			else
			{alert('adresse valide')}
	}


et voilà le petit formulaire pour l’entrrée de l’utilisateurs


<div id="formSelectMan" style="display:none">
    <br />
      <input name="adrMan" type="text" id="adrMan" value="Entrez l'adresse" size="15" />
      <input name="vue" type="button" value="Vérifier" onclick="verif()" />
    </div>

d’accord, pour le moment, ce n’est pas utile de savoir ça surement.
Mais voilà, il faut que je puisse “sortir” une adresse IP appartenant à la plage 224.0.1.0-239.254.254.254, de plus, il faut que cette adresse ne soit pas dans une mes table de ma “future” base de donnée.

J’ai penser créer une table IP où je pouvais rentrer les adresse possible, mais c’est ridicule car, table trop grande et pour rien.
Après j’ai penser à de l’incrémentation, mais les “.” me dérange et la délimitation aussi.

Et après, j’ai arrêter de penser car j’ai fait le tour des zones de mon cerveau sans résultats…

Donc si quelqu’un avec une idée, une pensée, un code??? je prends tout.

Merci d’avance.

Que penses-tu de dédier une plage d’adresses au mode automatique et une autre au mode manuel ?

Je voudrais savoir dans quel cadre tu fais ce travail ? C’est quoi la finalité ?

Juste un truc: une IP c’est avant tout un nombre sur 4 octets, écrit sous la forme que l’on connaît pour des raisons pratiques de lecture.

ie: il te suffit de rechercher les deux ip (en splittant par “-”) et de valider le format des deux ip. Puis de calculer l’entier associé à ton ip :

Si tu as 4 parties ip[0], …, ip[3]: ((ip[0] << 32) & (0xFF << 32)) | ((ip[1] << 16) & (0xFF << 16)) | ((ip[2] << 8) & (0xFF << 8)) | ((ip[3] << 0) & (0xFF << 0))

Cela te donne l’entier ad hoc. Tu auras normalement deux entiers associés pour lesquels tu peux tester facilement le range, et aussi en additionnant un nombre quelconque chopper une ip aléatoire.

Note: ne gère pas très bien les cas lipotropes (en javascript/java/php/etc, un entier est forcément signé, ce qui fait que tu peux avoir quelques problèmes)

Je suis en stage, et je dois créer un formulaire permettant à l’entreprise de rentrer des données dans une base.
L’entreprise travaillant dans le domaine télévisuel, ils ont à gérer beaucoup d’adresse IP ou milticast. Donc soit ils enregistrent leur chaine ave l’adresse IP qu’ils connaissent déjà (manuel), soit ils en prennent une de libre (soit auto), sachant qu’une adresse peut contenir plusieurs chaine (MPTS).
Sachant que les adresses doivent faire partie de la plage 224.0.1.0-239.254.254.254.

Mais j’ai trouver comment faire pour sortir une adresse ip aléatoire, en utilisant l’incrémentation.


include ("connect.php");
		include ("Controleur.php");
		
			$ip = "224.0.1.0";
			//récupère les lignes de la table informations 
			$Multicasts = GetListeMulticasts();
			//affichage ligne par ligne
			$UnMulticast = GetLigne($Multicasts);
			while($UnMulticast)
			{
				$suivante = long2ip(ip2long($ip));
				if($unMulticast['Multicast']==$ip)
				{
					$ip=$suivante;
				}
				$UnMulticast=GetLigne($Multicasts);
			}
			return $ip;

long2ip transforme un nombre en adresse ip
et ip2long une adresse ip en nombre


include ("connect.php");
if (!Connecter()) {
        echo "Echec de la connexion à la base de données";
        exit; // fait échouer tout le reste du script
}

//Récupere les lignes de la table information triés par multicast
function GetListeMulticasts(){
	$MonSQL= "SELECT * FROM information ORDER BY Multicast";
     $CurseurMulticast = mysql_query($MonSQL);
     return $CurseurMulticast;

et


function GetLigne($Curseur) {
// fournit une ligne du curseur passé en paramètre
   $Ligne=mysql_fetch_array($Curseur);
   return $Ligne;
}

Il ne reste plus qu’à limiter au maximum l’adresse ip à 239.254.254.254
Edité le 18/08/2008 à 10:43

héhé, il font faire sa a des stagiaire ?

( les rapiats ? )