Socket UDP

Petit nouveau ! | 1 Messages

27 nov. 2009, 18:36

Bonjour,

J'ai un problème un peu particulier, mon but est d'envoyer un packet UDP à une adresse IP virtuelle en 10.147.10.10 sur le port 4001. Cette adresse IP virtuelle redirige automatiquement vers le serveur qui est actif, donc mon packet UDP va être redirigé soit sur le serveur en 10.147.10.11 ou 10.147.10.12 suivant lequel est actif, ensuite ce dernier doit me faire un retour à mon packet UDP que j'aimerai intercepter pour le traiter.

Le problème est que quand j'ouvre mon socket je l'ouvre avec la machine en 10.147.10.10 et pas avec les deux autres, comment faire pour être à l'écoute des deux autres IP à savoir que je dois être en écoute également sur le PORT que j'ai initié lors de la création de mon socket

Voici mon code:
$fp = fsockopen("udp://10.147.10.10", 4001, $errno, $errstr);
$oob="01,0160415412,01 42 82 34 56,6,1,,,,,1,".chr(10);
if (!$fp) 
{
    echo "ERREUR : $errno - $errstr<br />\n";
} 
else 
{
    fwrite($fp,$oob,strlen($oob));
	/*while (!feof($fp)) {*/
        echo fgets($fp, 40);
    //}
	fclose($fp); 
}
Comme vous le voyez je me connecte au 10.147.10.10, mais je n'aurai jamais de retour. Par contre si je me connecte au 10.147.10.11 (c'est actuellement le serveur qui est actif ça pourrait être le 10.147.10.12) et bien j'arrive bien à avoir un retour de mon serveur qui m'affiche:

OK,01,0160415412,01 42 82 34 56,6,1

Pour résumer j'ouvre mon socket depuis ma machine depuis un port aléatoire mais je me connecte toujours sur le serveur en face sur le 4001, ce dernier va me répondre toujours via le serveur actif en utilisant comme port de destination, le port aléatoire que j'avais utilisé pour créer un socket depuis mon pc. [PC port 55000 par exemple -> Serveur 4001; Serveur Actif 4001 -> 55000]


Si quelqu'un trouve une technique ?? Merci beaucoup pour votre aide


Cordialement.