到目前为止,我有以下Elixir代码
{:ok, server_socket} = :gen_tcp.listen(port)
{:ok, client_socket} = :gen_tcp.accept(server_socket)
如何从client_socket
获取MAC地址?
P.S。我知道MAC地址每跳都会更改,但是我的网络确保从客户端到服务器只有一跳,因此,如果我可以获取MAC地址,那肯定是客户端的。
答案 0 :(得分:1)
Erlang提供了:inet.getifaddrs/0
来获取接口名称及其地址的列表,但是没有现成的方法可以让您从以下位置获取连接的主机或路由器的mac地址。一个插座。
问题在于TCP独立于任何MAC级别协议。实际上,在使用以太网链路层时,TCP堆栈使用ARP来获取连接的主机或路由器的MAC。
一些可能的解决方案是:
ioctl SIOCGARP
代码了解C
的结果System.cmd
来获取arp
之类的Shell程序的结果答案 1 :(得分:0)
您可以将os:cmd与IP邻居显示结合使用
os:cmd("ip neighbor show").