delphi中用icmp探测远程主机是否存活
网络通讯中经常需要确定远程主机是否存活,以决定下一部进行的操作.可以直接使用icmp协议来实现,但是要考虑许多协议细节,实现起来比较麻烦.windows 自带的icmp库里有现成的函数可以使用,只要在使用前填充相应的数据结构就可以了. 【程序编程相关:Shutdown reboot logo】
2005-03-10 jlbnet 【推荐阅读:Create a menu item i】
//用到的协议数据结构 【扩展信息:Simulate the pressin】
以下是要使用的数据结构.这些结构msdn里有c形式的声明,这里给出的是delphi的形式.
pipoptioninfo = ^tipoptioninfo; // ip 头选项 tipoptioninfo = packed record ttl: byte;//存活时间 tos: byte;//type of service,请求类型 flags: byte;//标志 optionssize: byte;//选项长度 optionsdata: pchar;//选项数据 end; picmpechoreply = ^ticmpechoreply; ticmpechoreply = packed record // icmp 返回信息 address: dword;//ip地址 status: dword;//状态 rtt: dword; datasize: word;//数据长度 reserved: word;//保留 data: pointer;//数据 options: tipoptioninfo;//选项区 end;//动态库中的函数声明
ticmpcreatefile = function: thandle; stdcall; //创建icmp句柄 ticmpclosehandle = function(icmphandle: thandle): boolean; stdcall; //关闭icmp句柄 ... 下一页