博文

目前显示的是标签为“SIOCGIFHWADDR”的博文

Linux编程获取指定网口IP地址

在Linux下,我们可以使用C语言编程获取指定网口的IP地址,下面是相应的源码(可将eth0改为相应的网络结点): #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <linux/if.h> #include <linux/if_ether.h> #include <sys/ioctl.h> #include <netinet/in.h> #include <arpa/inet.h> void main() {       struct ifreq ifr;       int sock;       struct sockaddr_in saddr;       strcpy(ifr.ifr_name, "eth0");       sock = socket(AF_INET, SOCK_STREAM, 0);       ioctl(sock, SIOCGIFADDR, &ifr);       memcpy(&saddr, &ifr.ifr_addr, sizeof(ifr.ifr_addr));       printf("%s\n", inet_ntoa(saddr.sin_addr)); }

Linux编程获取指定网口MAC地址

在Linux下,我们可以使用C语言编程获取指定网口的MAC地址,下面是相应的源码(可将eth0改为相应的网络结点): #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <linux/if.h> #include <linux/if_ether.h> #include <sys/ioctl.h> #include <netinet/in.h> #include <arpa/inet.h> void main() {       unsigned char *ptr;       struct ifreq ifr;       int sock;       strcpy(ifr.ifr_name, "eth0");       strcpy(ifr.ifr_hwaddr.sa_data, "");       sock = socket(AF_INET, SOCK_STREAM, 0);       ioctl(sock, SIOCGIFHWADDR, &ifr);       ptr = (unsigned char *) ifr.ifr_hwaddr.sa_data;       printf("x:x:x:x:x:x\n",                   (ptr[0] & 0377), (ptr[1] & 0377), (ptr[2] & 0377),  ...