可以使用的計算機的網卡的硬件地址,如建議here,用下面的Matlab代碼提取它:
not_win=true;
switch computer('arch')
case {'maci','maci64'}
[~,mac_add]=system('ifconfig |grep ether | grep -o -E "([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}"');
case {'glnx86','glnxa64'}
[~,mac_add]=system('ifconfig | grep HWaddr | grep -o -E "([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}"');
case {'win32','win64'}
not_win=false;
sid = '';
ni = java.net.NetworkInterface.getNetworkInterfaces;
while ni.hasMoreElements
addr = ni.nextElement.getHardwareAddress;
if ~isempty(addr)
sid = [sid, '.', sprintf('%.2X', typecast(addr, 'uint8'))];
end
end
otherwise, error('Unknown architecture')
end
if(not_win)
mac_add=regexprep(mac_add,'\r\n|\n|\r','.');
sid=upper(strrep(mac_add(1:end-1),':',''));
end
的sid
變量包含你正在尋找的唯一標識符。 您必須檢測機器的體系結構,因爲java.net.NetworkInterface.getNetworkInterfaces在Unix上無法正常工作,只返回正在運行的接口;因此您必須收集解析ifconfig結果的mac地址(有關示例,請參閱here)。
注意!在Mac上,如果啓動虛擬機,則可以添加虛擬網絡接口,因此sid可能會更改。
我對Mac協議並不是很瞭解,但是根據網絡而改變名稱的部分不僅僅是後綴(名稱的前綴保持不變)? – Hoki