ping指定地址
最近用到相应功能,网上搜了下。
感谢网友的分享,原文链接如下:http://blog.csdn.net/nanfeiyannan/article/details/6636280
稍微更改了内容,代码如下:
unit uPing; interface uses
WinSock, Windows; type
PIPOptionInformation = ^TIPOptionInformation; TIPOptionInformation = packed record
TTL: Byte;
TOS: Byte;
Flags: Byte;
OptionsSize: Byte;
OptionsData: PChar;
end; PIcmpEchoReply = ^TIcmpEchoReply; TIcmpEchoReply = packed record
Address: DWORD;
Status: DWORD;
RTT: DWORD;
DataSize: Word;
Reserved: Word;
Data: Pointer;
Options: TIPOptionInformation;
end; TIcmpCreateFile = function: THandle; stdcall;
TIcmpCloseHandle = function(IcmpHandle: THandle): Boolean; stdcall;
TIcmpSendEcho = function(IcmpHandle: THandle; DestinationAddress: DWORD;
RequestData: Pointer; RequestSize: Word;
RequestOptions: PIPOptionInformation; ReplyBuffer: Pointer;
ReplySize: DWORD; Timeout: DWORD): DWORD; stdcall; function PingHost(HostIP: String): Boolean; implementation function PingHost(HostIP: String): Boolean; var
hICMP: THandle;
hICMPdll: THandle;
IcmpCreateFile: TIcmpCreateFile;
IcmpCloseHandle: TIcmpCloseHandle;
IcmpSendEcho: TIcmpSendEcho;
pIPE: PIcmpEchoReply; // ICMP Echo reply buffer
FIPAddress: DWORD;
FSize: DWORD;
FTimeOut: DWORD;
BufferSize: DWORD;
pReqData, pRevData: PAnsiChar;
MyString: string;
begin
Result := False;
hICMPdll := LoadLibrary('icmp.dll');
if hICMPdll = 0 then
exit;
@IcmpCreateFile := GetProcAddress(hICMPdll, 'IcmpCreateFile');
@IcmpCloseHandle := GetProcAddress(hICMPdll, 'IcmpCloseHandle');
@IcmpSendEcho := GetProcAddress(hICMPdll, 'IcmpSendEcho');
hICMP := IcmpCreateFile;
if (hICMP = INVALID_HANDLE_VALUE) then
exit;
FIPAddress := inet_addr(PAnsiChar(HostIP));
MyString := 'Hello,World'; // send data buffer
pReqData := PAnsiChar(MyString);
FSize := 40; // receive data buffer
BufferSize := SizeOf(TIcmpEchoReply) + FSize;
GetMem(pIPE, BufferSize);
FillChar(pIPE^, SizeOf(pIPE^), 0);
GetMem(pRevData, FSize);
pIPE^.Data := pRevData;
FTimeOut := 1000;
try
Result := IcmpSendEcho(hICMP, FIPAddress, pReqData, Length(MyString), nil,
pIPE, BufferSize, FTimeOut) > 0;
finally
IcmpCloseHandle(hICMP);
FreeLibrary(hICMPdll);
FreeMem(pRevData);
FreeMem(pIPE);
end;
end; end.
现将代码放这,有空再吃透代码。
ping指定地址的更多相关文章
- linux ping IP地址与telnet 测试IP端口
ping命令是不能够测试端口的,ping只是测试网络联接状况以及信息包发送和接收状况. 格式:ping IP地址或主机名 [-t] [-a] [-n count] [-l size] 参数含义:-t不 ...
- Mac ping localhost 地址变化
title: Mac ping localhost 地址变化date: 2016-1-15 16:21:55categories: IOS tags: mac 小小程序猿我的博客:http://day ...
- winfrom绘制渐变 / 调用浏览器访问指定地址
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) {//绘制渐变色背景 Graphics g ...
- Golang TCP转发到指定地址
Golang TCP转发到指定地址 第二个版本,设置指定ip地址 代码 // tcpForward package main import ( "fmt" "net&qu ...
- keil 编译器V6 定义函数在ram中运行-和在指定地址定义常量
之前一直是用v5编译,编译速度慢,换成V6编译速度差不多快50% ,而且arm后期只维护v5编译器不在更新v5编译器.切换到V6编译器大势所趋,把之前v5且换到v6需要如下更改: 1. CMSIS包需 ...
- js 跳转到 百度指定地址定位点
js 跳转到 百度指定地址定位点 http://api.map.baidu.com/geocoder?address=北京市海淀区上地信息路9号奎科科技大厦&output=html&s ...
- GDB查看内存命令(x命令) 用gdb查看指定地址的内存内容
GDB查看内存命令(x命令) - super119 - 博客园 https://www.cnblogs.com/super119/archive/2011/11/18/2254382.html 可以使 ...
- STM8的AIR与STM32的Keil的指定地址存数据
[经验分享]KE02在IAR和KEIL中以常量形式初始化EEPROM值一, 经验分享描述 写这篇经验分享的原因是,之前有一个客户,他希望在KE02的芯片中,不要出现使用EEPROM操作命 ...
- ASP.NET Core 应用配置指定地址和端口
更新记录 本文迁移自Panda666原博客,原发布时间:2021年5月10日. 几种方式 ASP.NET Core 应用配置指定地址和端口支持以下几种主要方式: 1.在命令行模式启动应用时设置 --u ...
随机推荐
- byte数据的常用操作函数[转发]
/// <summary> /// 本类提供了对byte数据的常用操作函数 /// </summary> public class ByteUtil { ','A','B',' ...
- Jetty和tomcat的对比
上周面试一个来自百度的员工,其中提到一个监控项目,使用jetty容器提供rest api服务,一直懵懂jetty /tomcat这些容器的区别,周末查了下,下面这个说的简单明了~ 转自:http:// ...
- Http的Get/Post请求区别
1.HTTP请求格式: <request line> <headers> <blank line> [<request-body>] 在HTTP请求中, ...
- goldengate for big data 12.3发布
主要新增特性:通用JDBC目标端:支持Amazon Redshift & IBM Netezza Oracle GoldenGate for Big Data 12.3现在支持通用的JDBC目 ...
- 安全协议系列(二)----CCM与CCMP
CCMP(CTR with CBC-MAC Protocol) 是 IEEE 802.11i 中推出使用基于 AES 的 CCM 模式的安全加密协议.与原来脆弱的 WEP 算法及临时补救措施 TKIP ...
- ad bga扇出 和群组布线
本文关于如何快速规范的bga布线和扇出做笔记 目的:layout一个ili的3+1的控制板.把线距控制在4mil 这样可以节约制造成本. 问题:需要大改布局.尤其是bga扇出和通道连接的问题. 细节: ...
- 关于iOS导航控制器隐藏和显示会出现返回键失效,导航栏标题动画异常
最近做的demo bug出现了,我觉得这个bug出现得很经典所以贴出来给大家看看, bug演示就是:点击返回键失效出现如下gif图演示的内容 为啥会出现如此奇葩的bug,系统的返回键居然失效了,尴尬 ...
- android基础(五)网络数据解析方法
在网络上传输数据时最常用的方法有两种:XML和JSON,下面就对这两种类型的数据解析进行讲解. 一.XML数据解析 在Android中,常见的XML解析器分别为SAX解析器.DOM解析器和PULL解析 ...
- C# 时间计算 今天、昨天、前天、明天 一个月的开始日期与结束日期
C# 时间计算 今天.昨天.前天.明天 class Program { static void Main(string[] args) { ...
- 使用 UnrealPak.exe 创建 Pak文件方法
看来各位摸UE4 的基佬们,也是被DLC搞得不要不要的呢,其实热更新PAK是很简单就可以实现的,虽然当时我也是弄了快一个月. 下面贴一段以前在 Runtime 状态下 Mount Pak的代码,希望能 ...