Page 1 sur 1

[R] Calculer l'ip de broadcast

Posté : dim. 06 sept. 2015 21:16
par Utilisateur 3309 supprimé
Bonjour,
je ne parviens pas a faire une fonction qui me permettrai d'obtenir l'ip de broadcast dans la mesure ou je connais mon IP et mon masque de sous réseau.
le calcul est expliqué ici:
https://openclassrooms.com/forum/sujet/ ... ge-5421031

Merci pour votre aide. :mrgreen:

Re: [..] Calculer l'ip de broadcast

Posté : dim. 06 sept. 2015 22:02
par jguinch
C'est une demande de script, ou tu veux juste de l'aide ?
Ou bloques-tu ?

Re: [..] Calculer l'ip de broadcast

Posté : dim. 06 sept. 2015 22:12
par Utilisateur 3309 supprimé
ben c'est un peu les deux, je ne suis pas sur de partir dans la bonne direction, voilà ce que j'ai a ce stade :
J'ai réussi pour l'ip et le masque a convertir le décimal vers le binaire. Là ca me parait un peut fastidieux à partir de ca d'arriver au résultat final donc j'ai l'impression de partir dans la mauvaise voie.
► Afficher le texte

Re: [..] Calculer l'ip de broadcast

Posté : dim. 06 sept. 2015 22:19
par jguinch
Pas besoin de convertir en binaire pour utiliser les opérateurs logiques.
En partant de ça : https://www.autoitscript.com/forum/topi ... ment=55539
► Afficher le texte

Re: [..] Calculer l'ip de broadcast

Posté : dim. 06 sept. 2015 22:23
par Utilisateur 3309 supprimé
Tu m'as tué là... :mrgreen:
Je savais bien que ce n'était pas normal de produire autant de code pour faire ça...
Merci beaucoup ! :wink:

Re: [R] Calculer l'ip de broadcast

Posté : dim. 06 sept. 2015 22:28
par jguinch
Et encore, c'est la version longue... :mrgreen:

Re: [R] Calculer l'ip de broadcast

Posté : dim. 06 sept. 2015 22:47
par jchd
Oui, si on omet la validation :

Code : Tout sélectionner

Local $IP = '192.168.27.83'
Local $mask = '255.255.240.0'

ConsoleWrite(_BroadcastAddr($IP, $mask) & @LF)

Func _BroadcastAddr($sIP, $sMask)
    Local $aIP = StringSplit($sIP, ".", 2)
    Local $aMask = StringSplit($sMask, ".", 2)
    Local $sBroadcast
    For $i = 0 To 3
        $sBroadcast &= BitOR($aIP[$i], BitAND(BitNOT($aMask[$i]), 0xFF)) & "."
    Next
    Return StringTrimRight($sBroadcast, 1)
EndFunc
 

Re: [R] Calculer l'ip de broadcast

Posté : dim. 06 sept. 2015 22:58
par jguinch
► Afficher le texte
:mrgreen:

Re: [R] Calculer l'ip de broadcast

Posté : dim. 06 sept. 2015 23:00
par mikell
?

Code : Tout sélectionner

$sBroadcast &= BitOR($aIP[$i], BitXOR($aMask[$i], 0xFF)) & "."

Re: [R] Calculer l'ip de broadcast

Posté : dim. 06 sept. 2015 23:10
par jguinch
T'as l'oeil mikell !
Je suis passé à côté de ça :roll:
:arrow:

Re: [R] Calculer l'ip de broadcast

Posté : dim. 06 sept. 2015 23:18
par jchd
Heureusement que tu n'as pas à nous faire la même en IPv6

Re: [R] Calculer l'ip de broadcast

Posté : jeu. 10 sept. 2015 13:13
par Utilisateur 3309 supprimé
Bonjour,
je reviens vers vous concernant l'envoi d'un paquet UDP sur 255.255.255.255, ca ne marche pas chez moi, je suis en v3.3.14.1
avec SmartSniff sur mon PC je ne vois aucun paquet sortir. j'ai fait quelques recherches et j'ai trouver ceci:
https://www.autoitscript.com/forum/topi ... esnt-work/
et cela nous mene a ce rapport de Bug:
https://www.autoitscript.com/trac/autoit/ticket/938
et visiblement cela a été corrigé depuis la V3.3.1.1

Mais chez moi cela ne marche pas, et ce n'est pas un problème avec mon PC ou ma carte réseau car avec WakeMeOnLan j'arrive a envoyer un paquet WOL sur 255.255.255.255, que je vois bien sortir de mon PC avec smartsniff, et qui démarre bien le PC ciblé.

voici mon code:
► Afficher le texte
Image

Le but de celui-ci est de récupérer dans un menu déroulant la liste des équipements innactifs de ma LiveBox. et donc de les redémarrer en envoyant un paquet magique.
Donc jusque là je calculais l'ip de broadcast du sous réseau, jusqu'à ce que j'apprenne que "je me faisait des nœuds au cerveau" et qu'un simple envoi du paquet magique sur 255.255.255.255 fonctionnait.
J'ai vérifié avec WakeMeOnLan et c'est vrai, mais dans mon script si je remplace à la ligne 48:

Code : Tout sélectionner

$connexion = UDPOpen($IPBroadcast, 7)
par:

Code : Tout sélectionner

$connexion = UDPOpen("255.255.255.255", 40000)
et bien cela ne fonctionne pas, aucune erreur n'est renvoyée et aucun paquet ne sort de l'application.

Re: [R] Calculer l'ip de broadcast

Posté : jeu. 10 sept. 2015 19:34
par jchd
Vu l'aide de UDPOpen, ça me semble normal. Si tu essayais de mettre le flag à 1 (ou $UDP_OPEN_BROADCAST le bien nommé) ?

Re: [R] Calculer l'ip de broadcast

Posté : jeu. 10 sept. 2015 20:33
par Utilisateur 3309 supprimé
je crois que je mérite le fouet...
Merci jchd

Re: [R] Calculer l'ip de broadcast

Posté : jeu. 10 sept. 2015 21:36
par orax
Image

Re: [R] Calculer l'ip de broadcast

Posté : ven. 11 sept. 2015 00:48
par jchd
Le fouet ? Bah tu te l'infliges tout seul, alors pourquoi se fatiguer ? :mrgreen: