用C语言得到Linux主机的IP地址

来源:互联网 发布:java语言导学pdf 编辑:程序博客网 时间:2024/05/16 13:43
#include <stdio.h>;#include <sys/types.h>;#include <sys/socket.h>;#include <sys/ioctl.h>;#include <netinet/in.h>;#include <net/if.h>;#include <net/if_arp.h>;#include <arpa/inet.h>;#include <errno.h>;#define ETH_NAME        "eth0"int main(){        int sock;        struct sockaddr_in sin;        struct ifreq ifr;                sock = socket(AF_INET, SOCK_DGRAM, 0);        if (sock == -1)        {                perror("socket");                return -1;                        }                strncpy(ifr.ifr_name, ETH_NAME, IFNAMSIZ);        ifr.ifr_name[IFNAMSIZ - 1] = 0;                if (ioctl(sock, SIOCGIFADDR, &ifr) < 0)        {                perror("ioctl");                return -1;        }        memcpy(&sin, &ifr.ifr_addr, sizeof(sin));        fprintf(stdout, "eth0: %s\n", inet_ntoa(sin.sin_addr));                return 0;}