69,371
社区成员
发帖
与我相关
我的任务
分享
linux 下修改ip
Reader_11 »
给你一个修改IP地址的代码
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <fcntl.h>
#include <errno.h>
#include <net/if.h>
int ifconfig(const char *ifname, const char *ipaddr)
{
struct sockaddr_in sin;
struct ifreq ifr;
int fd;
int ret;
char *ptr;
short found_colon = 0;
bzero(&ifr, sizeof(struct ifreq));
if (ifname == NULL)
return (-1);
if (ipaddr == NULL)
return (-1);
fd = socket(AF_INET, SOCK_DGRAM, 0);
if (fd == -1)
{
perror("Not create network socket connection\\n");
return (-1);
}
strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
ifr.ifr_name[IFNAMSIZ - 1] = 0;
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = inet_addr(ipaddr);
memcpy(&ifr.ifr_addr, &sin, sizeof(sin));
if (ioctl(fd, SIOCSIFADDR, &ifr) < 0)
{
perror("Not setup interface\\n");
return (-1);
}
ifr.ifr_flags |= IFF_UP | IFF_RUNNING;
if (ioctl(fd, SIOCSIFFLAGS, &ifr) < 0)
{
perror("SIOCSIFFLAGS");
return (-1);
}
return (0);
}
//Usage setip eth0 xxx.xxx.xxx.xxx
int main(int argc, char *argv[])
{
ifconfig(argv[1], argv[2]);
return 0;
}