3

良い時間です。

ルビーコード:

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': Operation not supported on socket (Errno::EOPNOTSUPP)」というエラーが発生します。

このエラーメッセージを修正/渡しioctl、ソケットで作業する方法はありますか?

4

1 に答える 1

1

http://hintsforums.macworld.com/showthread.php?t=97909

「次の機能は Mac OS X では使用できません:

1) POSIX タイマー ライブラリ (-librt リアルタイム) 2) コマンド SIOCGIFHWADDR を使用した ioctl - ネットワーク インターフェイスの Mac アドレスを取得します。

C'est la vie.

于 2011-11-28T22:09:35.967 に答える