C语言Ip获取mac,C语言怎么实现Windows下获取IP和MAC地址?

C语言实现Windows下获取IP和MAC地址。

复制代码

1 #include

2 #include

3 #include

4 #include

5 #include

6 #include

7 #include

8 #pragma comment(lib,"ws2_32.lib")

9 #pragma comment(lib,"netapi32.lib")

10 void CheckIP(void)

11 {

12     WSADATA wsaData;

13     char name[155];

14     char *ip;

15     PHOSTENT hostinfo;

16     if (WSAStartup(MAKEWORD(2, 0), &wsaData) == 0)

17     {

18         if (gethostname(name, sizeof(name)) == 0)

19         {

20             if ((hostinfo = gethostbyname(name)) != NULL)

21             {

22                 ip = inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list);

23                 printf(" IP地址: %s ", ip);

24             }

25         }

26         WSACleanup();

27     }

28 }

29 int getMAC(char * mac)

30 {

31     NCB ncb;

32     typedef struct _ASTAT_

33     {

34         ADAPTER_STATUS   adapt;

35         NAME_BUFFER   NameBuff[30];

36     }ASTAT, *PASTAT;

37

38     ASTAT Adapter;

39     typedef struct _LANA_ENUM

40     {

41         UCHAR length;

42         UCHAR lana[MAX_LANA];

43     }LANA_ENUM;

44     LANA_ENUM lana_enum;

45     UCHAR uRetCode;

46     memset(&ncb, 0, sizeof(ncb));

47     memset(&lana_enum, 0, sizeof(lana_enum));

48

49     ncb.ncb_command = NCBENUM;

50     ncb.ncb_buffer = (unsigned char *)&lana_enum;

51     ncb.ncb_length = sizeof(LANA_ENUM);

52     uRetCode = Netbios(&ncb);

53     if (uRetCode != NRC_GOODRET)

54         return uRetCode;

55

56     for (int lana = 0; lana

57     {

58         ncb.ncb_command = NCBRESET;

59         ncb.ncb_lana_num = lana_enum.lana[lana];

60         uRetCode = Netbios(&ncb);

61         if (uRetCode == NRC_GOODRET)

62             break;

63     }

64     if (uRetCode != NRC_GOODRET)

65         return uRetCode;

66

67     memset(&ncb, 0, sizeof(ncb));

68     ncb.ncb_command = NCBASTAT;

69     ncb.ncb_lana_num = lana_enum.lana[0];

70     strcpy_s((char*)ncb.ncb_callname,5, "*");

71     ncb.ncb_buffer = (unsigned char *)&Adapter;

72     ncb.ncb_length = sizeof(Adapter);

73     uRetCode = Netbios(&ncb);

74     if (uRetCode != NRC_GOODRET)

75         return uRetCode;

76     sprintf_s(mac,18, "%02X-%02X-%02X-%02X-%02X-%02X",

77         Adapter.adapt.adapter_address[0],

78         Adapter.adapt.adapter_address[1],

79         Adapter.adapt.adapter_address[2],

80         Adapter.adapt.adapter_address[3],

81         Adapter.adapt.adapter_address[4],

82         Adapter.adapt.adapter_address[5]

83         );

84     return 0;

85 }

86 int main(void)

87 {

88     CheckIP();

89     char   mac[200];

90     getMAC(mac);

91     printf(" mac地址 : %s ", mac);

92     getchar();

93     return 0;

94 }

447d970c89971488dda872217c42d408.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值