Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2998740
  • 博文数量: 523
  • 博客积分: 11908
  • 博客等级: 上将
  • 技术积分: 5475
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-03 15:50
文章分类

全部博文(523)

文章存档

2019年(3)

2013年(4)

2012年(71)

2011年(78)

2010年(57)

2009年(310)

分类: LINUX

2011-06-14 09:33:14

#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;
  
}


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