Rest Pcap4j:获取具有IPv6地址的客户端MAC地址
我正在尝试使用数据包捕获(pcap4j)获取客户端的MAC地址。我已尝试通过Rest Pcap4j:获取具有IPv6地址的客户端MAC地址,rest,pcap4j,Rest,Pcap4j,我正在尝试使用数据包捕获(pcap4j)获取客户端的MAC地址。我已尝试通过MacAddress.getByName(IP\U地址)为MacAddress创建对象,其中IP\U地址取自HttpServletRequest.getRemoteAddress() 示例代码 private void bar(HttpServletRequest request) { InetAddress addr = InetAddress.getByName(request.getRemoteHo
MacAddress.getByName(IP\U地址)
为MacAddress创建对象,其中IP\U地址
取自HttpServletRequest.getRemoteAddress()
示例代码
private void bar(HttpServletRequest request) {
InetAddress addr = InetAddress.getByName(request.getRemoteHost());
MacAddress address = MacAddress.getByName(addr.getHostName());
// TODO: Do something with MacAddress object to get MAC Address
}
现在问题来了:
我已经在本地主机上测试了这一点,并且请求。getRemoteHost()
和addr.getHostName()
都返回了ipv6环回地址。因此无法创建MacAddress对象stacktrace:
java.lang.IllegalArgumentException: invalid hex string(localhost), not match pattern(\A[0-9a-fA-F][0-9a-fA-F](\Ql\E[0-9a-fA-F][0-9a-fA-F])*\z)
at org.pcap4j.util.ByteArrays.parseByteArray(ByteArrays.java:914)
at org.pcap4j.util.MacAddress.getByName(MacAddress.java:64)
at org.pcap4j.util.MacAddress.getByName(MacAddress.java:55)
at com.xxxxx.MacController.bar(MacController.java:121)
at com.xxxxx.MacController.getMac(MacController.java:110)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
我如何确保它同时适用于ipv4和ipv6,因为我不确定客户端的地址方案是什么。我计划在RESTful web服务中使用它