-
-
Windows C语言 icmp ping命令探测主机存活 笔记
-
发表于:
2020-4-30 01:41
6831
-
Windows C语言 icmp ping命令探测主机存活 笔记
参考学习链接:https://docs.microsoft.com/en-us/windows/win32/api/icmpapi/nf-icmpapi-icmpsendecho
之前在VS2015 2017 2019一直编译不通过,不知道是一些什么奇奇怪怪的问题,但过了几天,编译又成功了,很奇怪,但至少目前是没问题的,先贴一下MSDN上面给的示例代码吧
这个程序的核心就是一个IcmpSendEcho函数,IcmpSendEcho函数像目标主机发送一个IPv4的ICMP响应请求。这个函数在IcmpAPI.h头文件中定义如下
有点凌乱,MSDN官网上面的更简洁一点
参数介绍
1、IcmpHandle
是一个句柄,HANDLE声明,返回IcmpCreateFile()函数的打开的ICMP文件句柄
目标IPv4地址,采用IPAddr结构的形式,也就是inet_addr(ip),如inet_addr("127.0.0.1")的返回值,作用是将点分十六进制转换为小端序形式的十六进制数。
3、RequestData
请求数据的地址指针,也就是发送的字符串数组名,一般发啥过去,返回的就是啥
4、RequestSize
RequestData的大小,一般在strlen(RequestData)的基础上+1,不加也可以,如示例代码中直接使用sizeof(RequestData)的返回值
5、RequestOptions
指向请求的IP标头选项的指针,形式为IP_OPTION_INFORMATION结构。在64位平台上,此参数采用IP_OPTION_INFORMATION32结构的形式。如果不需要指定IP标头选项,则此参数可以为NULL。这个需要注意的是,64位平台IP_OPTION_INFORMATION结构是有后32的,而32位的没有
这个结构体定义如下
描述了被包括在IP分组的报头选项,也就是ICMP的报头结构,其中OptionData对应发送的数据,size对应大小
6、ReplyBuffer
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课