利用堆栈来ping计算机

以下的这个类是解决一个很普通的问题的:在一台WIN95的计算机上怎么样利用MSTCP堆栈去PING另外一台计算机。当然,这个类在NT3.51和NT4上也可以用。显然,MicroSoft公司不会那么笨,在WIN系统中又另外构造这么一个单独的机制来解决这个问题,让本来就复杂的WIN系统更加复杂。那么,我们只能用ICMP DLL自己来解决这个问题了。不过,很让人失望,MicroSoft公司直到Winsock 2.0也没有解决这个问题。

难题就是:给一个计算机的名字,或者一台计算机的IP地址,怎么样去PING它,而且得到它的响应时间。所以我们用了ICMP DLL,而对于一些SOCKET结构来说,在CSocket中已经全部都有定义了。所以,下面的类是一个CSocket的子类,它将会有更好的功能来解决更多的问题。不过你得先得到ICMPAPI.H,ICMAPI.CPP,ICMP.LIB和IPEXPORT.H,IPEXPORT.CPP这些文件,这些文件应该加在你的工程中。这些文件你可以在Microsoft Developers Network的光盘上得到,不过在微软公司的主页上也能拿到,而且更新。

类中有4个公共函数,如下:

unsigned long ResolveIP(CString strIP)

unsigned long ResolveName(CString strHostName)

CString GetIP(unsigned long ulIP)

DWORD PingHost(unsigned long ulIP, int iPingTimeout)

ResolveIP(CString strIP)函数使用一个IP地址的字符串来作为参数,返回值是IP地址值。

ResolveName(CString strHostName)函数使用一计算机名的字符串来作为参数,经过DNS或者WINS的解析,返回值是被PING计算机的IP 地址,注意它使用了GetHostByName模块化。

GetIP(unsigned long ulIP)函数是以IP地址作为参数(注意是IP地址),返回值是一个表示IP地址的字符串。

PingHost(unsigned long ulIP, int iPingTimeout)函数,第1个参数是IP地址(注意是IP地址,而不是IP地址的字符串),第2个参数是表示时间值的,表示间隔时间的。函数功能是,去PING一台计算机,返回值是PING的响应时间。

时间: 2024-11-16 13:14:24

利用堆栈来ping计算机的相关文章

利用WSH实现关闭计算机功能

利用WSH实现关闭计算机功能,其实很简单,采用下面的语句即可. 把下面的语句保存为test.vbs,然后运行,就可以看到效果. Set objshell = wscript.CreateObject("Shell.Application") objshell.ShutdownWindows

(转载)利用C语言实现计算机图像处理的方法

(转载)利用C语言实现计算机图像处理的方法 章类别:C/C++教程 | 发表日期:2008-3-8 |    1.图像平移 图像平移只是改变图像在屏幕上的位置,图像本身并不发生变化. 假设原图像区域左上角坐标为(x0, y0),右下角坐标为(x1, y1),将图像分别沿x和y轴平移dx和dy,则新图像的左上角坐标为(x0 + dx, y0 + dy),右下角坐标为(x1 + dx, y1 + dy).坐标平移变换公式为: x′ = x + dx y′ = y + dy 在屏幕上实现图像的移动分为

利用C#重启远程计算机

如果叫你实现远程启动别人的计算机,你首先想到的可能是先做一个在远程计算机上面运行客户端程序,然后在本地计算机上面再做一个服务器端程序,通过这二个程序直接的通讯实现重启远程计算机.这当然是一个方法.但这未免有点麻烦.如果现在只告诉你远程计算机的管理者的登陆帐号,而并不允许你在远程的计算机上面运行一个所谓的客户端程序,让你通过程序来完成重启远程计算机.不知道你是否感觉有些困难了.其实按照上面的这些条件实现重启远程计算机,利用C#可以比较方便的完成.下面就来介绍一下具体的实现方法. 一. C#重启远程

利用DOS批处理Ping网中可能存在的电脑

  利用DOS可以批处理Ping网中可能存在的电脑,该如何操作呢? 第一步:在"命令提示符"中输入for/L%i IN(1.1.254)DO ping-w 2 -n 1 192.168.1.%i,这是DOS批处理命令. 第二步:按[Enter]键,就可以按192.168.0.1~192.168.0.255的顺序Ping局域网中的电脑. 在Ping的批处理执行结束后,可以显示局域网中的电脑IP列表进行查询,在Ping批处理后,输入arp-a. 然后按[Enter]即可显示局域网中所有IP

利用C++ Builder为计算机增加启动日志

公用机房或办公室中的计算机通常是大家共享使用的,作为管理者或"主要"使用者很想掌握机器何时被开启使用过,若有一个启动记录就可以随时了解这些情况.本文给出如何用C++ Builder 5实现这样一个程序的编制,使每次启动计算机即执行本程序,在注册表中记录开机时间等信息,以便随时通过注册表编辑器查看.程序特点:每次启动计算机都要执行一次(这一功能由本程序自动完成而不必手工在注册表中添加,只需运行一次程序即可),为增加隐蔽性,该程序为后台运行的无窗体程序. 编程要点: 1. 在C++ Bui

PS教你利用堆栈手法打造酷炫的长曝光效果

  我们先看一组图片: 图片好不好看我们先不谈,但是这种摄影手法体现的"艺术灵感"正是摄影的魅力. 这种图片是怎么拍摄的呢? 我先介绍一个概念:堆栈. 什么叫堆栈?Adobe这么说: 图像堆栈将一组参考帧相似.但品质或内容不同的图像组合在一起.将多个图像组合到堆栈中之后,您就可以对它们进行处理,生成一个复合视图,消除不需要的内容或杂色. 简单点儿理解,就是把一叠图片放在那里,然后通过某种算法,取每张图片一点儿或者混合每张图片一点儿,最后达到一种需要的效果. 举个例子,我们可以用堆栈来合

C++数据结构与算法专题

快速排序算法的C++实现 详解qsort函数的用法 C++求二个数的最大公约数与最小公倍数实例 小览CallStack(调用栈)(三)-用调试器脚本查看调用栈信息 小览call stack(调用栈) (二)--调用约定 小览call stack(调用栈) (一) C++/CLI中栈对象的设计问题 POJ 1694 C++ (排序) 高效实现Josephus算法 利用堆排序实现学生成绩管理 C++双向循环链表的操作与实现 基于Crtpto++的RSA签名算法 自定义函数使用map排序 C++数据结

c#如何修改计算机时间日期和格式?利用WindowAPI函数可以做到

c#利用WindowAPI函数修改计算机日期时间和格式,代码片段如下,有需要的朋友拿去吧.  代码如下 复制代码 Public Class SetComputerDateTime { [DllImport("kernel32.dll", EntryPoint = "GetSystemDefaultLCID")] public static extern int GetSystemDefaultLCID(); [DllImport("kernel32.dll

如何使用Ping命令来判断网络故障?

  如何使用Ping命令来判断网络故障: 除了日常生活之外,现时很多企业也离不开网络,比如说电子邮件的业务交往,网络电话VOIP和即时聊天软件的应用,VPN异地信息的交流等也为企业提高的工作效率及节省很大部分的费用. 因此,这种种的应用已经给人们一种依赖性.试问,如果当您的电脑不能上网,估计您连电脑都懒得开了.那么,当电脑不能上网时,我们如何才能准确地判断网络故障出在哪里?又如何能快捷地解决这故障?IT百科教你如何使用ping命令来判断网络故障. 方法/步骤 其实,电脑不能上网大致可分以下几个原