linux 下获取本地IP地址
#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;
}
转自 http://blog.csdn.net/wj4064/article/details/2553158