golang:CGO实现获取指定网卡的MAC地址
Posted IGuoSJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang:CGO实现获取指定网卡的MAC地址相关的知识,希望对你有一定的参考价值。
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地址的主要内容,如果未能解决你的问题,请参考以下文章