📄 getipmask.c
字号:
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <net/if.h>
#define ETH_NAME "eth0"
int main()
{ int sock;
char * localaddr=NULL;
char * localmask=NULL;
struct sockaddr_in * sin, *mask;
struct ifreq ifr;
char buff[256];
sock=socket(AF_INET,SOCK_DGRAM,0);
if(sock==-1)
{ perror("Error:get local ip socker failed!");
return 0;
}
else
{
printf("sock success\n");
}
strncpy(ifr.ifr_name,ETH_NAME,IFNAMSIZ);
ifr.ifr_name[IFNAMSIZ-1]=0;
printf("%s\n",ifr.ifr_name);
if(ioctl(sock,SIOCGIFADDR,&ifr)<0)
{ perror("Error:get local ip ioctl fail!");
return 0;
}
else
{ printf("ioctl success\n");
}
memcpy(buff,&ifr.ifr_addr,sizeof(struct sockaddr_in));
sin=(struct sockaddr_in *)buff;
localaddr=inet_ntoa(sin->sin_addr);
printf("local ip:%s\n",localaddr);
if(ioctl(sock,SIOCGIFNETMASK,&ifr)<0)
{ perror("Error:get local netmask ioctl fail!");
return 0;
}
else
{ printf("ioctl success\n");
}
memset(buff,0,256);
memcpy(buff,&ifr.ifr_netmask,sizeof(struct sockaddr_in));
mask=(struct sockaddr_in *)buff;
localmask=inet_ntoa(mask->sin_addr);
printf("local netmask:%s\n",localmask);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -