linux C 获取与修改IP地址
2014-09-26 10:16
363 查看
// setip.h #ifndef _INCLUDE_SETIP_H_ #define _INCLUDE_SETIP_H_ // 设置IP地址 int setip(char *ip); // 获取IP地址 char* getip(char *ip_buf); #endif // end setip.h
//setip.c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/ioctl.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<netinet/in.h>
#include<net/if.h>
#include "setip.h"
//设置IP地址
int setip(char* ip)
{
struct ifreq temp;
struct sockaddr_in *addr;
int fd = 0;
int ret = -1;
strcpy(temp.ifr_name, "eth0");
if((fd=socket(AF_INET, SOCK_STREAM, 0))<0)
{
return -1;
}
addr = (struct sockaddr_in *)&(temp.ifr_addr);
addr->sin_family = AF_INET;
addr->sin_addr.s_addr = inet_addr(ip);
ret = ioctl(fd, SIOCSIFADDR, &temp);
close(fd);
if(ret < 0)
return -1;
return 0;
}
// 获取IP地址
char* getip(char* ip_buf)
{
struct ifreq temp;
struct sockaddr_in *myaddr;
int fd = 0;
int ret = -1;
strcpy(temp.ifr_name, "eth0");
if((fd=socket(AF_INET, SOCK_STREAM, 0))<0)
{
return NULL;
}
ret = ioctl(fd, SIOCGIFADDR, &temp);
close(fd);
if(ret < 0)
return NULL;
myaddr = (struct sockaddr_in *)&(temp.ifr_addr);
strcpy(ip_buf, inet_ntoa(myaddr->sin_addr));
return ip_buf;
}
int main(int argc, char * argv[])
{
char * ip = "172.20.223.117";
char buf[16]="";
setip(argv[1]);
printf("ipaddr=%s/n",getip(buf));
return 0;
}
// end setip.c
相关文章推荐
- linux C 获取与修改IP地址
- Linux下C语言获取和修改本机IP地址
- linux C 获取与修改IP地址
- linux 利用ioctl函数获取IP地址、子网掩码、MAC地址和修改本机IP地址、子网掩码、网关
- linux下 获取本机ip地址和掩码地址
- LINUX修改IP地址_ifcfg-eth0详解
- 常用的Linux 命令 -- 修改主机名和ip地址
- LINUX--修改IP地址
- linux服务修改ip地址
- Jeremiah的小程序之一:Linux下获取本机的IP地址
- LINUX--修改IP地址
- 在Linux下获取多个ip地址(转载)
- Linux 修改 IP地址 和 网关
- 在linux下 获取,修改本机IP地址的两个函数
- 在linux下 获取,修改子网掩码NETMASK的两个函数
- linux获取IP地址
- linux系统下获取IP地址
- 在Linux下获取IP地址
- Linux系统修改IP地址的方法
- pc机取得并修改arm linux IP地址 网关 子网掩码 主机名等信息