0
我知道如何從ifconfig中獲得。 (linux) 但是有另一種方法嗎?可以在插座中找到它。如何獲取網絡掩碼?
我知道如何從ifconfig中獲得。 (linux) 但是有另一種方法嗎?可以在插座中找到它。如何獲取網絡掩碼?
您需要使用IO#ioctl。這是完全不可移植的。在我的Linux系統中這個碼字:
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的系統之間有很大不同,我不得不期待通過一些系統的頭文件以獲取buf中的地址的[] .pack,位置合適的尺寸和SIOCGIFBRDADDR的數值(ioctl的第一個參數)。
如果這些值不適合你,我可以給你更多關於如何找到它們的信息。
編輯重命名變量 - 它確實是網絡掩碼,而不是廣播;) – SteveRawlinson 2010-10-25 10:42:57
你的目標操作系統是什麼? – Brian 2010-10-22 18:39:31
linux是我的目標操作系統 – wizztjh 2010-10-23 12:59:41