客户端获取mac地址

3
我正在尝试收集建筑物的MAC地址,并使用Vaadin 6创建了一个Web应用程序(该应用程序具有其他功能,因此我必须坚持使用vaadin)。
问题是,我希望用户只需输入自己的姓名,我就可以自动获取他的MAC地址,但问题是我不知道该如何做。
我曾经使用过
ip = InetAddress.getLocalHost();
mac = ip.getHostAddress();

问题在于这段代码返回了我的服务器IP和MAC地址。

所以问题是,我怎样才能获取客户端的MAC地址?

如果我能获取本地IP就更好了,但首先需要获取MAC地址。

非常感谢任何帮助。


@user2511414,你可以通过IP地址获取MAC地址;而且,这并不是“非常不合逻辑”,而是TCP/IP协议的ARP协议的基本操作。但是,它只能用于同一子网上的IP地址。真正的问题在于“为了什么目的”?除了在某个地方显示它之外,在Java中无法使用MAC地址进行任何有用的操作。 - user207421
@EJP 说得好,我只是没有考虑到工作的范围,我的意思是互联网。 - user2511414
Ejp,我需要防火墙的MAC地址,每个人都会得到一个静态IP,而我需要通过MAC地址来识别电脑。也许你可以发布一下如何获取MAC地址的解决方案? - Mihai
1个回答

3

在Servlet中,您可以获取客户端的IP地址如下 -

HttpServletRequest httpServletRequest = (HttpServletRequest) request;

// Proxy
String userIpAddress = httpServletRequest.getHeader("X-Forwarded-For");

if(userIpAddress == null) {
   userIpAddress = request.getRemoteAddr();
}

Vaadin中有一个名为WebBrowser的类,你可以使用它 -

WebBrowser browser = (WebBrowser) getWindow().getTerminal();
String userIpAddress = browser.getAddress();

发送者的MAC地址会随着数据帧穿过路由器而改变,你总是会接收到网络网关的MAC地址。


非常感谢您的回复。我并没有真正理解mac部分以及它在节点之间的作用。如果我在局域网上有一个服务器,理论上连接应该是直接的,对吗?那么我能获取到mac地址吗? - Mihai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接