300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > C语言Ip获取mac C语言怎么实现Windows下获取IP和MAC地址?

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

时间:2024-04-09 09:10:11

相关推荐

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 {

20if ((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)

62break;

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 }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。