nodejs获取客户端的mac地址

时间:2017-03-27 08:21:03

标签: node.js sockets tcp mac-address

我在NodeJS中使用 net 模块创建了一个Tcp服务器,并尝试从每个客户端获取mac地址信息以生成uuid。但是,在Socket对象中,没有关于它的信息。我也尝试从arp表中获取读取mac地址,但它也没有工作。还有其他任何解决方法吗?

3 个答案:

答案 0 :(得分:2)

因为MAC地址属于OSI层的第2层,所以除非你在同一地址空间,因为它被路由器剥离,否则你将无法访问它。

<强>解释

MAC地址,属于第2层&#34;数据链路层&#34; 7 OSI Layers。客户&#39; MAC地址仅对其直接连接的路由器可见。

路由器将部分地反汇编数据包以进入第3层和第34层网络层&#34;标头,以确定数据包的发送位置,使用IP地址。

然后,第4层,&#34;传输层&#34;,您正在谈论特定协议,如TCP。

因此,作为服务器,您不能获取客户端&#39; MAC地址,除非您已连接到第2层中的客户端。

答案 1 :(得分:2)

我之前为生产环境中的教室做了类似的事情。就我而言,我可以访问所有客户端计算机。要么您拥有所有客户端的管理员权限,要么您可以以某种方式将客户端预先注册到您的数据库中,您可以执行以下操作。如果没有,请忽略这个答案。

  1. 在客户端中创建另一个NodeJs程序托管Web服务(不要忘记实现某种安全性)。这个程序可能只是一个带有getmac节点模块的简单ExpressJs。

  2. 将客户端的所有IP或域名注册到Server数据库。可能是手动的,或者在我的情况下,当客户端开启时,它会自动向服务器发送请求以进行注册。 (如果需要,实施客户端 - 服务器验证)

  3. 当Server需要来自客户端的mac时,Server app会向每个预先注册的客户端发送请求,以获取其mac地址或Server需要客户端提供的任何其他信息。

答案 2 :(得分:0)

节点js中的网络客户端不提供mac地址。您可以选择:

1-发送自己的@mac:我的意思是在客户端,当您与服务器建立连接时,将Mac地址作为数据发送。

2-使用socket.io insteed net。它将为您提供所需的所有信息