Je sais comment obtenir de ifconfig. (linux) Mais y a-t-il un autre moyen? Peut trouvé dans la douille.Comment obtenir un masque de réseau?
Répondre
Vous devez utiliser IO # ioctl. Ceci est totalement non portable. Sur mon linux ces mots de code:
require 'socket'
sock = Socket.new(Socket::AF_INET, Socket::SOCK_DGRAM,0)
buf = ["eth0",""].pack('a16h16')
sock.ioctl(0x891b, buf)
netmask = "#{buf[20]}.#{buf[21]}.#{buf[22]}.#{buf[23]}" #=> "255.255.255.240"
ioctl diffère considérablement entre les systèmes et je devais regarder à travers quelques fichiers d'en-tête du système pour obtenir la bonne taille pour le [] .pack, l'emplacement de l'adresse dans buf et la valeur numérique pour SIOCGIFBRDADDR (le premier argument à ioctl).
Si ces valeurs ne fonctionnent pas pour vous, je peux vous donner plus d'informations sur la façon de les trouver.
Edité pour renommer la variable - c'est vraiment le masque de réseau, pas la diffusion;) – SteveRawlinson
Quel est votre système d'exploitation cible? – Brian
linux est ma cible os – wizztjh