Les Forums
Les forums sont fermés. Ils restent présent pour consultation et archivage.
Vous pouvez désormais poser vos questions directement dans les commentaires en bas de chaque page du site.
Alors n'hésitez pas à participer
Détection des postes actifs
Salut, J’essaye depuis 2 jours de trouver un moyen de d’afficher les ip des postes actifs dans mon réseau local…. J’en ai besoin pour un site dynamique, je bosse alors avec PHP comme langage. Coté socket, toutes les fonctions qui existe en C existe en PHP, y a pas une très grande différence… Bon, pour l’instant j’essaie seulement de tester la connexion via le code : <?php error_reporting(E_ALL); $network = "192.168.0."; $port = 10000; $socket = socket_create(AF_INET, SOCK_RAW, 1 ) or die("impossible de creer la socket <br>"); for($i=1;$i<10;$i++) { $host = $network = "192.168.0." . $i ; if (socket_connect($socket, $host, $port)) echo "connexion OK avec $host <br>"; else echo "connexion OFF avec $host <br>"; } ?> Le problème, c’est ce script me retourne : connexion OK avec 192.168.0.1 connexion OK avec 192.168.0.2 connexion OK avec 192.168.0.3 ….. même si 192.168.0.2 n’existe même pas dans le réseau ?!!! Avez-vous une des remarques ? Merci d’avance |
Lu trinity, Pourquoi passes tu en mode RAW ? Ne serais tu pas mieux en mode TCP ? @+ _SebF - Sébastien FONTAINE |
Peut etre c'est même pas la bonne méthode car: $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP ) or die("impossible de creer la socket <br>"); socket_connect($socket, "127.0.0.1", 10000) or die("impossible de se connecter <br>"); me retourne avec TCP: "impossible de se connecter" |
Exactement. Est ce que le port 10000 est listen ? _SebF - Sébastien FONTAINE |
j'ai utilisé le mode RAW en espirant sniffer le réseau et donc savoir les les postes qui bougent... mais c'est pas aussi évident. je ne sais pas mais ce que tu me proposes suppose un truc client/serveur.. CAD deux sockets qui se connectent... mais moi je cherche seulement à tester le poste... c'est comme un ping... J'avoue que... ce que je fais avec les sockets, c'est plutôt du "learning by doing", j'ai pas trop bosser d'exemples et de tp pour savoir ce que je dois ou pas faire ... Merci |
Exactement La tu test si le port 10000 TCP est ouvert sur l'host distant. Et donc il te répond non. Soit tu test un pourt ouvert (essai le netbios) Soit tu n'utilise pas TCP mais ping @+ _SebF - Sébastien FONTAINE |
Merci pour votre patience avec quelqu'un aussi nulle que moi... J'ai tester d'autres ports et c'est idem <?php error_reporting(E_ALL); $socket1 = socket_create(AF_INET, SOCK_STREAM, SOL_TCP ) or die("impossible de creer la socket1 <br>"); if (socket_connect($socket1, "192.168.0.3", 80)) //http echo "c'est ok sur 80<br>"; else echo "impossible de se connecter sur 80<br>"; $socket2 = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP ) or die("impossible de creer la socket1 <br>"); if (socket_connect($socket2, "192.168.0.3", 137)) //netBios echo "c'est ok sur 137<br>"; else echo "impossible de se connecter sur 137<br>"; ?> alors si le host existe dans le réseau; j'ai: Warning: socket_connect() unable to connect [0]: Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusée. in c:\program files\easyphp1-8\www\socket\myex1.php on line 5 impossible de se connecter sur 80 c'est ok sur 137 [/color:143fdc7864] et s'il n'existe pas: Warning: socket_connect() unable to connect [0]: Une tentative de connexion a échoué car le parti connecté n'a pas répondu convenablement au-delà d'une certaine durée ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu. in c:\program files\easyphp1-8\www\socket\myex1.php on line 5 impossible de se connecter sur 80 c'est ok sur 137 [/color:143fdc7864] Je ne sais pas, mais je pense que je suis super trés loin de la solution... je fais fausse route, c'est sûr, c'est pas comme ça que je vais detecter les postes de mon réseau... Merci quand même |
Lu, Tu ne dois pas utiliser UDP, car tu n'aura pas de réponse vu qu'il n'y a pas de session. Je pensais plus à Netbios, comme le port 135, en mode TCP. Sinon, ton test précédent t'indiquait si le Pc était présent ou pas : Warning: socket_connect() unable to connect [0]: Une tentative de connexion a échoué => PC éteind Warning: socket_connect() unable to connect [0]: Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusée => PC allumé. Cependant, c'est pas très propre 🙂 L'idéale serait de passer par icmp _SebF - Sébastien FONTAINE |
salut _sebf t'as pas un script en icmp meme s'il est en C... j'essairai de le traduire en php. merci |
Si tu veux bidouiller un peu, j'ai pensé à un truc assez facile mais bon: [code:1:c18a676af0]exec("ping -a -n 1 $target > $outFile");[/code:1:c18a676af0] Reste plus qu'a parser le fichier de sortie. (cette solution est purement informative et non optimisée pour scanner un grand nombre de postes :>) |