0

ローカル コンピューターから MAC アドレスを取得するアプレットを作成しました。Eclipseでは問題なく動作しますが、現時点ではブラウザ経由で実行しようとしていますが、そうではありません。

いくつかのデバッグの後、この部分がブラウザで null を返すことに気付きました

InetAddress.getLocalHost();

誰でも理由を教えてもらえますか?

編集:

これは、Web 上のどこかで見つけたコードです。

   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;
    }
}

Eclipse の場合: addr には localhost アドレスがあります

ブラウザー (IE および chrome) では、addr は null です。

4

0 に答える 0