📄 ipconfig.h
字号:
#include <stdio.h>
#include <sys/types.h>
#include <sys/param.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <net/if.h>
#include <netinet/in.h>
#include <net/if_arp.h>
#include <arpa/inet.h>
#include <unistd.h> //for close()
#include <stdlib.h>
char *get_ip(char *devname)
{
struct ifreq ifreq;
int sockfd;
char *gv_ipaddr;
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
perror("socket");
return 0;
}
strcpy(ifreq.ifr_name, devname);
if(ioctl(sockfd, SIOCGIFADDR, &ifreq) < 0)
{
perror("ioctl");
return 0;
}
gv_ipaddr=inet_ntoa(((struct sockaddr_in *)&ifreq.ifr_addr)->sin_addr);
puts("IP address is:");
puts(gv_ipaddr);
close(sockfd);
return gv_ipaddr;
}
char *get_netmask(char *ip, char *devname)
{
struct ifreq ifreq;
int sockfd;
char *gv_netmask;
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return 0;
}
if(ioctl(sockfd,SIOCGIFNETMASK,&ifreq)<0)
{
perror("ioctl");
return 0;
}
gv_netmask=inet_ntoa(((struct sockaddr_in *)&ifreq.ifr_addr)->sin_addr);
puts("netmadk is:");
puts(gv_netmask);
close(sockfd);
return gv_netmask;
}
int set_ip(char *ip, char *devname)
{
struct ifreq ifreq;
struct sockaddr_in ipaddr;
int sockfd;
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
perror("socket");
return -1;
}
strcpy(ifreq.ifr_name, devname);
if(ioctl(sockfd, SIOCGIFADDR, &ifreq) < 0)
{
perror("ioctl");
return -2;
}
bcopy(&ifreq.ifr_addr, &ipaddr, sizeof(ifreq.ifr_addr));
ipaddr.sin_addr.s_addr = inet_addr(ip);
bcopy(&ipaddr, &ifreq.ifr_addr, sizeof(ipaddr));
if(ioctl(sockfd, SIOCSIFADDR, &ifreq) < 0)
{
perror("ioctl");
return -3;
}
close(sockfd);
return 0;
}
int set_netmask(char *ip, char *devname)
{
struct ifreq ifreq;
struct sockaddr_in ipaddr;
int sockfd;
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return -1;
}
strcpy(ifreq.ifr_name,devname);
if(ioctl(sockfd,SIOCGIFNETMASK,&ifreq)<0)
{
perror("ioctl");
return -2;
}
bcopy(&ifreq.ifr_addr,&ipaddr,sizeof(ifreq.ifr_addr));
ipaddr.sin_addr.s_addr=inet_addr(ip);
bcopy(&ipaddr,&ifreq.ifr_addr,sizeof(ipaddr));
if(ioctl(sockfd,SIOCSIFNETMASK,&ifreq)<0)
{
perror("ioctl");
return -3;
}
close(sockfd);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -