首页程序设计LinuxC程序根据IP及子网掩码计算网关

根据IP及子网掩码计算网关

时间2021-09-02 08:41:59发布caterwang分类LinuxC程序浏览13001

linux网络配置中,经常只知道IP和子网掩码,但是又需要配置网关。以下是网上薅(hao平声)来的代码,又根据自己的需要做的修改。有需要同学注意选择使用。

//根据IP及子网掩码计算网关
bool CalGateWay(const unsigned char *ip,const unsigned char *mask, unsigned char *gw,int datlen)
{
	unsigned char ip_s[20],mask_s[20];
	unsigned char ip_d[4],mask_d[4],gw_d[4];
	char* tmp = NULL;
	int index;
	//以下操作会影响ip及mask的值,所以需要备份一份出来用
	memcpy(ip_s,ip,datlen);
	memcpy(mask_s,mask,datlen);
	
	tmp = strtok ((char *)ip_s, ".");	
	index = 0;
	while(tmp!=NULL)
	{
		ip_d[index]=atoi(tmp);
		tmp = strtok (NULL, ".");
		index++;
	}
	
	tmp = strtok ((char *)mask_s, ".");
	index = 0;
	while(tmp!=NULL)
	{
		mask_d[index]=atoi(tmp);
		tmp = strtok (NULL, ".");
		index++;
	}
	
	for(index=0;index < 4;index++)
	{
		gw_d[index]=(ip_d[index] & mask_d[index]);
	}
	
	gw_d[3] += 1;

	snprintf((char*)gw,datlen,"%d.%d.%d.%d",gw_d[0],gw_d[1],gw_d[2],gw_d[3]);

	return true;
}


凯特网版权声明:以上内容允许转载,但请注明出处,谢谢!

展开全文READ MORE
C++linuxcentos7IP网关
KiCAD电路原理图编辑器Eeschema C++对象间的数据共享问题

游客 回复需填写必要信息