首页
社区
课程
招聘
Windows C语言 icmp ping命令探测主机存活 笔记
发表于: 2020-4-30 01:41 6801

Windows C语言 icmp ping命令探测主机存活 笔记

2020-4-30 01:41
6801

参考学习链接: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直播授课

收藏
免费 1
支持
分享
最新回复 (1)
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
scrapy 如果要爬取整个站的内容,是要把所有页面的URL都获取到队列后才开始提取内容吗
2020-4-30 16:06
0
游客
登录 | 注册 方可回帖
返回
//