Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1147123
  • 博文数量: 646
  • 博客积分: 288
  • 博客等级: 二等列兵
  • 技术积分: 5375
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-08 14:33
个人简介

为了技术,我不会停下学习的脚步,我相信我还能走二十年。

文章分类

全部博文(646)

文章存档

2014年(8)

2013年(134)

2012年(504)

分类:

2012-07-01 20:34:10

原文地址:linux 下获取本地IP地址 作者:embededgood

#include <stdio.h>
 
#include <stdlib.h>
 
#include <error.h>
 
#include <string.h>
 
#include <netdb.h>
 
#include <sys/types.h>
 
#include <netinet/in.h>
 
#include <sys/socket.h>
 
#include <unistd.h>
 
#include <sys/ioctl.h>
 
#include <arpa/inet.h>
 
#include <net/if_arp.h>
 
#include <net/if.h>
 
#include <arpa/inet.h>
  
int main(int argc, char *argv[])
  
{
  
  
  
    char ipbuf[16];
  
    getlocaip(ipbuf);
  
  
  
    printf("loca ip = %s\n", ipbuf);
  
    exit(0);
  
}
  
  
  
int getlocaip(char *ip)
  
{
  
    int sockfd;
  
  
  
    if(-1 == (sockfd = socket(PF_INET, SOCK_STREAM, 0)))
  
    {
  
        perror( "socket" );
  
        return -1;
  
    }
  
       
  
    struct ifreq req;
  
    struct sockaddr_in *host;
  
    bzero(&req, sizeof(struct ifreq));
  
    strcpy(req.ifr_name, "eth0");
  
    ioctl(sockfd, SIOCGIFADDR, &req);
  
    host = (struct sockaddr_in*)&req.ifr_addr;
  
    strcpy(ip, inet_ntoa(host->sin_addr));
  
    close(sockfd);
  
  
  
    return 1;
  
}


阅读(452) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~