Хорошее время суток.Mac + Ruby: Не удается получить доступ к разъему Socket? Как исправить?
рубин Код:
def hw_address(iface)
sock = Socket.new(Socket::AF_INET, Socket::SOCK_DGRAM,0)
buf = [iface,""].pack('a16h16')
sock.ioctl(SIOCGIFHWADDR, buf);
sock.close
return buf[18..24].to_etheraddr
end
puts hw_address('lo0')
Что делать: получает MAC-адрес интерфейса.
Работы на Debian, как ожидалось. Но на Mac OS X, им получать сообщение об ошибке: `` IOCTL ': Операция не поддерживается сокет (Errno :: EOPNOTSUPP) `
Есть в любом случае, чтобы исправить/передать это сообщение об ошибке & получить работу ioctl
на сокеты?
Откуда вы получаете определение SIOCGIFHWADDR? На моем Mac это, похоже, не определено даже в файлах заголовков системы - в sockio.h есть SIOCGLIFADDR, который, похоже, делает то же самое (но я не знаю, как получить доступ к этому из ruby). – SteveRawlinson
Спасибо, получил его из источников freebsd. –