正在从JAVA套接字检索远程客户端的MAC



下面是我的服务器的Java片段,它接受TCP连接。

InetAddress inetAddress = InetAddress.getByName("192.168.2.13");
ServerSocket serverSocket = new ServerSocket(5020, 100, inetAddress);

//accept connection
Socket mSocket = serverSocket.accept();

是否有任何方法可以转到较低层来检索向我的服务器发起请求的远程客户端的MAC地址(我不想要本地服务器的MAC地址(?我想写一个代码,在服务器接受连接之前,在表中查找远程客户端的MAC和IP地址,但我在这样做时遇到了困难。谢谢!

不,您无法使用链接层获取远程用户的MAC地址。假设远程用户是A,而您的服务器是B。在此点(AB(之间存在CDE路由器。

远程用户MAC地址将仅在用C的接口之一的目的地MAC地址封装IP数据报的帧中发送,然后路由器C将使用其接口之一的MAC地址将其发送到D,目的地MAC寻址作为D的接口之一,并且。。。等等(直到最终目的地是您的服务器的MAC地址(。

因此,当远程用户的IP地址不会改变时(假设他没有使用VPN(,源MAC地址就会改变。


如果您想获得远程用户的MAC地址,您必须将其包含在客户端发送到服务器的消息中。除非你是客户端的开发人员,否则我认为没有其他方法可以解决这个问题。

最新更新