Java InetAddress.getLocalHost()在浏览器中返回null
我编写了一个小程序,它从本地计算机获取MAC地址。 它在eclipse上运行得很好,但目前我试图通过浏览器运行它,但它没有 经过一些调试,我意识到这个部分在浏览器上返回nullJava InetAddress.getLocalHost()在浏览器中返回null,java,applet,inetaddress,Java,Applet,Inetaddress,我编写了一个小程序,它从本地计算机获取MAC地址。 它在eclipse上运行得很好,但目前我试图通过浏览器运行它,但它没有 经过一些调试,我意识到这个部分在浏览器上返回null InetAddress.getLocalHost(); 谁能告诉我为什么 编辑: 这是我在网上找到的代码: import java.applet.Applet; import java.awt.Graphics; import java.net.InetAddress; import java.net.Netwo
InetAddress.getLocalHost();
谁能告诉我为什么
编辑:
这是我在网上找到的代码:
import java.applet.Applet;
import java.awt.Graphics;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
public class LoginApplet extends Applet {
private static final long serialVersionUID = 1L;
private String macAddress;
public void init() {
setMacAddress(getMacAddressFromClient());
}
public void paint(Graphics g)
{
String mac = getMacAddress();
if(mac.isEmpty())
{
mac = "Empty";
}
g.drawString(mac,15,15);
}
public String getMacAddressFromClient() {
String macAddr= "";
InetAddress addr;
try {
addr = InetAddress.getLocalHost();
macAddress += addr.getHostAddress();
NetworkInterface dir = NetworkInterface.getByInetAddress(addr);
byte[] dirMac = dir.getHardwareAddress();
int count=0;
for (int b:dirMac){
if (b<0) b=256+b;
if (b==0) {
macAddr=macAddr.concat("00");
}
if (b>0){
int a=b/16;
if (a==10) macAddr=macAddr.concat("A");
else if (a==11) macAddr=macAddr.concat("B");
else if (a==12) macAddr=macAddr.concat("C");
else if (a==13) macAddr=macAddr.concat("D");
else if (a==14) macAddr=macAddr.concat("E");
else if (a==15) macAddr=macAddr.concat("F");
else macAddr=macAddr.concat(String.valueOf(a));
a = (b%16);
if (a==10) macAddr=macAddr.concat("A");
else if (a==11) macAddr=macAddr.concat("B");
else if (a==12) macAddr=macAddr.concat("C");
else if (a==13) macAddr=macAddr.concat("D");
else if (a==14) macAddr=macAddr.concat("E");
else if (a==15) macAddr=macAddr.concat("F");
else macAddr=macAddr.concat(String.valueOf(a));
}
if (count<dirMac.length-1)macAddr=macAddr.concat("-");
count++;
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
macAddr=e.getMessage();
} catch (SocketException e) {
// TODO Auto-generated catch block
macAddr = e.getMessage();
}
return macAddr;
}
public String getMacAddress() {
return macAddress;
}
public void setMacAddress(String macAddress) {
this.macAddress += macAddress;
}
}
import java.applet.applet;
导入java.awt.Graphics;
导入java.net.InetAddress;
导入java.net.NetworkInterface;
导入java.net.SocketException;
导入java.net.UnknownHostException;
公共类LoginApplet扩展小程序{
私有静态最终长serialVersionUID=1L;
私有字符串地址;
公共void init(){
setMacAddress(getMacAddressFromClient());
}
公共空间涂料(图g)
{
字符串mac=getMacAddress();
if(mac.isEmpty())
{
mac=“空”;
}
g、 抽绳(mac,15,15);
}
公共字符串getMacAddressFromClient(){
字符串macAddr=“”;
地址地址地址;
试一试{
addr=InetAddress.getLocalHost();
macAddress+=addr.getHostAddress();
NetworkInterface dir=NetworkInterface.getByInetAddress(addr);
字节[]dirMac=dir.getHardwareAddress();
整数计数=0;
for(int b:dirMac){
if(b0){
INTA=b/16;
如果(a==10)macAddr=macAddr.concat(“a”);
如果(a==11)macAddr=macAddr.concat(“B”);
如果(a==12)macAddr=macAddr.concat(“C”);
如果(a==13)macAddr=macAddr.concat(“D”);
如果(a==14)macAddr=macAddr.concat(“E”);
如果(a==15)macAddr=macAddr.concat(“F”);
else macAddr=macAddr.concat(String.valueOf(a));
a=(b%16);
如果(a==10)macAddr=macAddr.concat(“a”);
如果(a==11)macAddr=macAddr.concat(“B”);
如果(a==12)macAddr=macAddr.concat(“C”);
如果(a==13)macAddr=macAddr.concat(“D”);
如果(a==14)macAddr=macAddr.concat(“E”);
如果(a==15)macAddr=macAddr.concat(“F”);
else macAddr=macAddr.concat(String.valueOf(a));
}
如果(请计数。这可能是因为小程序设置了权限。请检查它们。”…在浏览器上返回null”真的吗?该方法没有定义为在任何点或任何情况下“返回”null
。我同意@VimalBera,发布SSCCE。“这是我在web上找到的代码:”但它不是SSCCE。。