C++获取网关(linux)

这里只讨论最简单与直接的方法,和route命令一样,从/proc/net/route读取,代码如下:

bool GetIPV4Gateway(const char * pNICName, char *pGateway, unsigned long len)
{
	char buffer[200] = { 0 };
	unsigned long bufLen = sizeof(buffer);

	unsigned long defaultRoutePara[4] = { 0 };
	FILE * pfd = fopen(PATH_ROUTE, "r");
	if (NULL == pfd)
	{
		return false;
	}

	while (fgets(buffer, bufLen, pfd))
	{
		sscanf(buffer, "%*s %x %x %x %*x %*x %*x %x %*x %*x %*x\n", (unsigned int *)&defaultRoutePara[1], (unsigned int *)&defaultRoutePara[0], (unsigned int *)&defaultRoutePara[3], (unsigned int *)&defaultRoutePara[2]);

		if (NULL != strstr(buffer, pNICName))
		{
			//如果FLAG标志中有 RTF_GATEWAY
			if (defaultRoutePara[3] & RTF_GATEWAY)
			{
				unsigned long ip = defaultRoutePara[0];
				snprintf(pGateway, len, "%d.%d.%d.%d", (ip & 0xff), (ip >> 8) & 0xff, (ip >> 16) &a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值