package main
import (
"fmt"
"strings"
)
/*
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <net/if.h>
char mac[32] = "";
int getPermMac(char *ifName)
{
struct ifreq ifreq;
int sock = 0;
sock = socket(AF_INET,SOCK_STREAM,0);
if(sock < 0) {
return 2;
}
strcpy(ifreq.ifr_name,ifName);
if(ioctl(sock,SIOCGIFHWADDR,&ifreq) < 0) {
return 3;
}
int i = 0;
for(i = 0; i < 6; i++){
sprintf(mac + 3*i, "%02X:", (unsigned char)ifreq.ifr_hwaddr.sa_data[i]);
}
mac[strlen(mac) - 1] = 0;
return 0;
}
*/
import "C"
func main() {
ifName := "eth0"
ptr := C.CString(ifName)
retCode := C.getPermMac(ptr)
if retCode != 0 {
return
}
var charray []byte
for i := range C.mac {
if C.mac[i] != 0 {
charray = append(charray, byte(C.mac[i]))
}
}
fmt.Println(strings.ToLower(string(charray)))
}
golang:CGO实现获取指定网卡的MAC地址
最新推荐文章于 2023-03-19 14:30:46 发布