⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getipmask.c

📁 arm平台下路由器设计中获取机器ip和mask的代码
💻 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 + -