无线路由器显示客户机mac ip功能如何实现
最近做无线路由开发(是基于linux内核的),网页显示客户机信息的功能。可不知如何实现!
网页登录路由器可以查看到连接此路由器的客户机信息,显示出客户机序号和MAC地址,它是如何获取客户机信息的,主要是MAC和IP。不知道这个功能是如何实现,新年祝福网页
客户机在连接上时,把自己的IP地址等信息发送过去,这样就获取了
int sockfd, sockfd1 struct sockaddr_in addr; int addr_len = sizeof(struct sockaddr_in); /* 在 accept 时就能知道对方IP了 */if((sockfd1 = accept(sockfd, &addr, &addr_len)) < 0) { perror("accept"); printf("connect from %s\n", inet_ntoa(addr.sin_addr)); /* 将IP转换成点分格式的字符串 */}
要确认,客户机到底是什么?
只要跟路由物理联通就算?这样的话,无线用wlanconfig可以列出所有物理联通的客户端,即MAC地址,但并不意味着这些客户端在IP层也是通的。在这个层面上,有线的PC是完全无法检测的。
或者,客户机是IP层可以和路由器可以通的?这样的话,可以用arp工具来查看,前提条件是客户机曾经和路由器通信过,不区分有线无线。
如果仅限于DHCP客户端,那么对于一些用静态IP的客户端是查不到的。如果dhcp server用的是dhcpd,所有分配过的IP记录在一个leases文件里,这个文件的路径和名字可以查看dhcpd的conf。也不区分有线无线
好吧,推荐一本书给你,《TCP/IP详解》卷一