socket编程——获取本机适配器信息

             

             遇上一点点的小麻烦,在包含 Iphlpapi.lib和include "Iphlpapi.h"可能会提示找不到头文件,要先在电脑里面找到windows的SDK,然后添加到include目录下,vc 6.0的一般在工具—>选项 -> 目录里面添加即可。添加好之后如果出现其他的一些情况,可能就是SDK与IDE版本的问题,一般来说微软的IDE是向下兼容的,所以换个高级的IDE,如vc 6不行就换vc 8 或者vc 9  一般就能正常工作了。

             下面是写好的代码:一般来说,你的电脑中有几个网卡适配器就会出现几个不同的适配器信息。数量应该是一致的。

#include <windows.h>
#include <stdio.h>
#include <IPHlpApi.h>
#pragma comment(lib,"Iphlpapi.lib")
#pragma comment(lib,"WS2_32.lib")


u_char g_ucLocalMac[6];
DWORD  g_dwGatewayIp;
DWORD  g_dwLocalIP;
DWORD g_dwMask;

bool GetGlobal()
{
	PIP_ADAPTER_INFO padapterInfo = NULL;
	PIP_ADAPTER_INFO pAdapter = NULL;

	ULONG ullen =sizeof(PIP_ADAPTER_INFO);
	padapterInfo = (PIP_ADAPTER_INFO) malloc(ullen);
	DWORD dwRetVal = GetAdaptersInfo(padapterInfo,&ullen);
	if(dwRetVal == ERROR_BUFFER_OVERFLOW)
	{
		free(padapterInfo);
		padapterInfo = (PIP_ADAPTER_INFO ) malloc(ullen);
		dwRetVal = GetAdaptersInfo(padapterInfo,&ullen);

	}
	//padapterInfo = (PIP_ADAPTER_INFO)::GlobalAlloc(GPTR,ullen);
	//
	//if(GetAdaptersInfo(padapterInfo,&ullen) == ERROR_SUCCESS)
	if(dwRetVal == NO_ERROR )
	{
		pAdapter = padapterInfo;

		while(pAdapter != NULL)
		{

			memcpy(g_ucLocalMac,pAdapter->Address,6);
			g_dwGatewayIp = inet_addr(pAdapter->GatewayList.IpAddress.String);
			g_dwLocalIP   = inet_addr(pAdapter->GatewayList.IpAddress.String);
			g_dwMask	  = inet_addr(pAdapter ->IpAddressList.IpMask.String); 
			printf("Adapter name:  %s",pAdapter ->AdapterName);
			pAdapter = pAdapter->Next;
			in_addr in;
			in.S_un.S_addr = g_dwLocalIP;
			printf("Ip Address: %s \n",inet_ntoa(in));

			in.S_un.S_addr = g_dwMask;
			printf("Ip Address: %s \n",inet_ntoa(in));

			in.S_un.S_addr = g_dwGatewayIp;
			printf("Ip Address: %s \n",inet_ntoa(in));

			u_char *p = g_ucLocalMac;
			printf("MAC Address: %02X-%02X-%02X-%02X-%02X-%02X\n",p[0],p[1],p[2],p[3],p[4],p[5]);
			printf("\n");

		}
	}
	printf("本机信息为:");
	return true;
}

int main()
{

	GetGlobal();
	system("pause");
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值