Linux下C语言获取本机IP地址,废话不多说,上源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#include <sys/ioctl.h> #include <net/if.h> #include <arpa/inet.h> char* GetLocalIp() { int MAXINTERFACES=16; char *ip = NULL; int fd, intrface, retn = 0; struct ifreq buf[MAXINTERFACES]; struct ifconf ifc; if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) >= 0) { ifc.ifc_len = sizeof(buf); ifc.ifc_buf = (caddr_t)buf; if (!ioctl(fd, SIOCGIFCONF, (char *)&ifc)) { intrface = ifc.ifc_len / sizeof(struct ifreq); while (intrface-- > 0) { if (!(ioctl (fd, SIOCGIFADDR, (char *) &buf[intrface]))) { ip=(inet_ntoa(((struct sockaddr_in*)(&buf[intrface].ifr_addr))->sin_addr)); break; } } } close (fd); return ip; } } |
发表评论
要发表评论,您必须先登录。