ping 地址

时间:2024.5.13

在“命令提示符”中用“Ping命令”轻松、快速地检测网络故障

为什么安装操作系统后不能上网?

正常上网取决于三条:1.网卡及其驱动程序没有问题;

2.系统网络连接设置没有问题;

3.网络供应商“高速公路”没有问题。

对于网络故障的具体分析和查找,可用“命令提示符”(在“运行”中输入cmd命令即可调出)的Ping命令进行轻松、快速检测(图文详解)——

首先,输入Ping 127.0.0.1(该IP是本地循环地址)。如发现本地址无法Ping通,就表明计算机的TCP/IP协议不能正常工作或者是网卡损坏。

图1

其次,如果能够Ping通,即输入“Ipconfig

ping地址

”命令来查看本地

的IP地址,然后Ping该IP(比如:Ping 192.168.12.114):通则表明网络适配器(网卡或MODEM)工作正常,不通则是网络适配器出现故障。

图2

再次,Ping一台同网段计算机的IP,不通则表明网络线路出现故障。若网络中还包含有路由器,则应先Ping路由器在本网段端口的IP:不通则此段线路有问题。通则再Ping路由器在目标计算机所在网段的端口IP:不通则是路由出现故障;通则再Ping目的机IP地址。

ping地址

图3

最后,检测一个带DNS服务的网络。在Ping通目标计算机的IP地址后,假如仍无法连接到该机,则可Ping该机的网络名(比如Ping jqcp.com):正常情况下会出现该网址所指向的IP,这表明本机的DNS设置正确而且DNS服务器工作正常,反之就可能是其中之一出现了故障。同样,也可通过Ping计算机名来检测WINS解析是否有故障(WINS是将计算机名解析到IP地址的服务)。

图4

ping地址

——当以上四个步骤执行完毕后,就可轻易判断出到底是哪个

环节出现了故障,并作相应处理。另外,如果想检测网络连接的详细状况,还可以在Ping的地址后面加上-t,这样即可不断地进行Ping的连接,反映出网络连接是否有中断或者丢包的现象出现。 如何获取对方IP-

1、ping检查法-

这种方法就是利用“ping”命令,来检查当前计算机是否能与对方好友的网站连通,在检查的过程中该地址能自动获得对方网站的IP地址。比方说,要是你想搜查天极网站的IP地址时,可以先打开系统的运行对话框,然后在其中输入“ping .cn”字符串命令,再单击“确定”按钮,在弹出的窗口中,就能知道网站的IP地址了。同样地,你也可以搜查其他网站的IP地址。-

2、日志查询法-

这种方法是通过防火墙来对QQ聊天记录进行实时监控,然后打开防火墙的日志记录,找到对方好友的IP地址。为方便叙述,本文就以KV2004防火墙为例,来向大家介绍一下如何搜查对方好友的IP地址: 考虑到与好友进行QQ聊天是通过UDP协议进行的,因此你首先要设置好KV防火墙,让其自动监控UDP端口,一旦发现有数据从UDP端口进入的话,就将它自动记录下来。在设置KV2004防火墙时,先单击防火墙界面中的“规则设置”按钮,然后单击“新建规则”按钮,弹出设置窗口;-

在该窗口的“名称”文本框中输入“搜查IP地址”,在“说明”文本框中也输入“搜查IP地址”;再在“网络条件”设置项处,选中“接

受数据包”复选框,同时将“对方IP地址”设置为“任何地址”,而在“本地IP地址”设置项处不需要进行任何设置;-

下面再单击“UDP”标签,并在该标签页面下的“本地端口”设置项处,选中“端口范围”选项,然后在起始框中输入“0”,在结束框中输入“65535”;同样地,在“对方端口”设置项处,也选中“端口范围”选项,然后在起始框中输入“0”,在结束框中输入“65535”。- 接着在“当所有条件满足时”设置项处,选中“通行”选项,同时将“其他处理”处的“记录”选项选中,而“规则对象”设置项不需要进行任何设置;完成了上面的所有设置后,单击“确定”按钮,返回到防火墙的主界面;再在主界面中选中刚刚创建好的“搜查IP地址”规则,同时单击“保存”按钮,将前面的设置保存下来。-

完成好上面的设置后,KV防火墙将自动对QQ聊天记录进行全程监控,一旦对方好友给你发来QQ信息时,那么对方好友的IP地址信息就会自动出现在防火墙的日志文件中,此时你可以进入到KV防火墙的安装目录中,找到并打开“kvfwlog”文件,就能搜查到对方好友的IP地址。-

3、工具查询法-

这种方法是通过专业的IP地址查询工具,来快速搜查到对方计算机的IP地址。例如,借助一款名为WhereIsIP的搜查工具,你可以轻松根据对方好友的Web网站地址,搜查得到对方好友的IP地址,甚至还能搜查到对方好友所在的物理位置。在用WhereIsIP程序搜查对方IP地址时,首先启动该程序打开搜查界面,然后单击该界面的

“Website”按钮,在其后的窗口中输入对方好友的Web地址,再单击“next”按钮,这样该程序就能自动与Internet中的DomainNameWhois数据库联系,然后从该数据库中搜查到与该Web网站地址对应的IP地址了。当然,除了可以知道IP地址外,你还能知道对方好友所在的具体物理位置。-

倘若要想查看局域网中某个工作站的IP地址时,可以使用“网络刺客II”之类的工具来帮忙;只要你运行该工具进入到它的主界面,然后执行工具栏中的“IP地址主机名”命令,在其后打开的对话框中,输入对方好友的计算机名称,再单击“转换成IP”按钮,就能获得对方好友所在计算机的IP地址了。-

如果你使用Oicqsniffer工具的话,那么查询QQ好友的IP地址就更简单了。只要你单击该程序界面中的“追踪”按钮,然后向对方好友发送一条QQ消息,那么Oicqsniffer工具就会自动将对方好友的IP地址以及端口号显示出来了。除此之外,还有许多可以查找IP地址的专业工具可以选择,例如IPsniper软件。-

4、命令查询法-

这种方法是通过Windows系统内置的网络命令“netstat”,来查出对方好友的IP地址,不过该方法需要你先想办法将对方好友邀请到QQ的“二人世界”中说上几句话才可以。下面就是该方法的具体实现步骤:-

首先单击“开始”/“运行”命令,在弹出的系统运行对话框中,输入“cmd”命令,单击“确定”按钮后,将屏幕切换到MS-DOS工作状

态;然后在DOS命令行中执行“netstat-n”命令,在弹出的界面中,你就能看到当前究竟有哪些地址已经和你的计算机建立了连接(如果对应某个连接的状态为“Established”,就表明你的计算机和对方计算机之间的连接是成功的);-

其次打开QQ程序,邀请对方好友加入“二人世界”,并在其中与朋友聊上几句,这样你的计算机就会与对方好友的计算机之间建立好了TCP连接;此时,再在DOS命令行中执行“netstat-n”命令,看看现在又增加了哪个tcp连接,那个新增加的连接其实就是对方好友与你之间的UDP连接,查看对应连接中的“ForeignAddress”就能知道对方好友的IP地址了。-

5、邮件查询法-

使用这种方法查询对方计算机的IP地址时,首先要求对方先给你发一封电子邮件,然后你可以通过查看该邮件属性的方法,来获得邮件发送者所在计算机的IP地址;下面就是该方法的具体实施步骤:- 首先运行Outlook express程序,并单击工具栏中的“接受全部邮件”按钮,将朋友发送的邮件接受下来,再打开收件箱页面,找到朋友发送过来的邮件,并用鼠标右键单击之,从弹出的右键菜单中,执行“属性”命令;-

在其后打开的属性设置窗口中,单击“详细资料”标签,并在打开的标签页面中,你将看“Received:fromiecaiwen(unknown[11.111.45.25])”这样的信息,其中的“11.111.45.25”就是对方好友的IP地址;当然,要是对方好友通过Internet中的WEB信箱给你发送电子邮件的话,

那么你在这里看到的IP地址其实并不是他所在工作站的真实IP地址,而是WEB信箱所在网站的IP地址。-

当然,如果你使用的是其他邮件客户端程序的话,查看发件人IP地址的方法可能与上面不一样;例如要是你使用foxmail来接受好友邮件的话,那么你可以在收件箱中,选中目标邮件,再单击菜单栏中的“邮件”选项,从弹出的下拉菜单中选中“原始信息”命令,就能在其后的界面中看到对方好友的IP地址了。-

6、询问法-

就是你直接询问,前提是对方会查询本机IP,再就是你的口才好,有诱惑力,切勿动粗。-

以上为获取对方IP的几种常用方法,要是你还有其他更好方法或者有什么心得,恳请不断补充完善!-

如何获取自己的IP-

首先单击“开始”/“运行”命令,在弹出的系统运行对话框中,输入“cmd”命令,单击“确定”按钮后,将屏幕切换到MS-DOS工作状态;然后在DOS命令行中执行“ipconfig/all”命令,在弹出的界面中,你就能看到自己的IP-

-

-


第二篇:Ping IP地址工具


目 录

绪论 ----------------------------------------- 3

第一章 绪论 ----------------------------------------- 3

第二章 程序功能 ----------------------------------------- 9

第三章 程序设计 ----------------------------------------- 10

第四章 窗口设计 ----------------------------------------- 16

第五章 结论 ----------------------------------------- 17

参考文献

关键词

Ping IP地址 ------------------------------------------ 21

Ping IP地址工具

绪论

Basic,源远流长的编程语言说起Basic,它是最古老的高级编程语言之一(19xx年创建),在70年代得到很大的发展。那时的个人计算机,Basic编程语言是必备的程序,像当时如日中天的苹果电脑很多机型就只配备了Basic编程语言,大名鼎鼎的微软公司就是靠为苹果电脑、IBM电脑开发Basic程序起家的。随着DOS和Windows操作系统的出现,电脑初学者不用先学习Basic了,但Basic作为一种编程语言仍然在高速发展,特别是以Basic起家的微软公司19xx年推出了Visual Basic(简称VB),该编程语言使用了可视化编程和对象技术,使得编程更加直观、高效。据说全世界有60%以上的编程者主要是使用Basic编程。 Basic,最简单实用的编程语Basic,顾名思义就是初学者使用的编程语言,多家公司出品了很多版本如Qbasic、Turbo Basic等。Visual Basic的意思就是可视化的Basic,由微软公司出品,目前版本为60,有标准版(初学者和不进行复杂编程者使用)、专业版(专业编程人员使用)、企业版(开发大型程序使用)之分。

Basic语言的特点:

●Basic的语法简单,语句与常用英语相似,容易理解

●Basic概念、基本语句较少,没有复杂的概念如指针等;

●Basic处理图像、音乐、字符串非常简单方便;

●Basic可以解释执行,调试程序非常方便;

●Basic不受硬件限制,编程不用了解内存、中断等。

学习Visual Basic的建议

深入理解基本概念:为电脑编程的思想方法与我们平常的想法概念有很大的不同,例如对于i=i+1这样的语句就不符合我们一般的数学方式。在Basic中,我们要理解数据、流程、赋值等概念,在Visual Basic中,我们就要理解窗口、对象、属性、方法、事件等概念。

抓住基本特征:学习过一门语言以上的编程人员都知道,各种语言的基本语句都差不多,不外乎赋值、判断、循环等。学习一门编程语言主要是抓住其主要特征即可。学习VB当然从VB的最主要特点入手:对象(Object)、属性(Property)、方法(Method)、事件(Event)。这四个特征构成了VB的灵魂。要学习VB编程,首先就得理解VB的这四个基本特征。 一定要动手做:学习语言,一定要动手做。特别是Visual Basic,编程的过程有点像搭积木一样,没有逻辑性很强的语句和流程,光是看书本和编程语句是理解不了的,只有动手去摆放摆放那些控件、窗口,去设置一下它们的属性如大小、颜色、字体,你才能掌握VB的编程。

循序渐进:虽然Visual Basic和Basic有很大差别(差别在40%以上),但Visual Basic使用的很多基本概念还是Basic的,建议在学习Visual Basic之前还是先大概学习了解一下Basic。

多看编程实例:尽管VB是编程语言中最简单的语言,但并不代表它不强大、不复杂,实际上VB是非常强大和复杂的,实现的功能多种多样,设计的技巧也是不胜枚举,如果只是靠书本来学习VB,是不可能成为Visual Basic的编程高手的,必须要多找些资料来学习,

特别是看优秀的编程实例。如可从各种书本、报刊中查找,当然更方便的是通过互联网来查找这方面的资料。

Visual Basic(以下简称VB)可以说是可视化语言的先驱了,而且它也是可视化程度最高的一个,从几年前VB诞生之日起到现在,它已经经历了五个版本,而且现在微软正在紧张的进行着VB6.0的研制、测试,这么高的更新率,不外乎说明两个问题:用户对VB的热衷,微软对VB的重视。不可否认微软对市场的预测能力是极为高明的,而它强大的技术、财力支持也使它在许多以前未进入的领域,在不长的时间内有成为最有力的竞争对手,如IE之于浏览器领域,《帝国时代》之于游戏都是最好的例证。对于VB现在也有一个很强的竞争对手――Delphi,有人把它称作VB杀手,这显然有偏激之处,VB的确有它的不足之处,但Delphi又何尝不是呢,而且以微软对VB的倾心,VB的功能必然会越来越强大。

VB的诞生

VB的出现可以说是Microsoft Windows的日渐成熟的必然产物。Microsoft Windows为程序员和最终用户提供了一个共同的人机界面。对用户,Windows提供了一个图形鼠标的操作环境,该环境对所有的应用程序都一样;对于程序员,Windows提供了一组预定义工具----称之为Microsoft Windows 的软件开发工具箱(SDK),该工具能使程序员建立一个与Windows界面相同的应用程序,而且,程序员不必关心最终用户的硬件配置情况。在这一开发环境中,程序员唯一困难的是Microsoft SDK提供了六百多个函数和与其一致的事件驱动(event-driven)编程技术。两种新方法的交叉使众多的程序员重新陷入困境,程序员不仅要掌握程序驱动编程技术和六百多个函数的功能,而且还得用C语言描述这些问题。因此一般情况下,程序员首先要掌握C程序设计技术,而后再开始学习SDK。这样的条件下就要求在Microsoft多任务环境下出现一种操作方便,使用简单的新工具----Visual Basic由此诞生。

何为可视

英文Visual的意思是“视觉的”,“可视的Baisc”这个名字可能抽象了点,但实际上它却是最直观的编程方法,之所以叫做“可视”,你只要看到VB的界面就会明白,实际上你无需编程,就可以完成许多步骤。在VB中引入了控件的概念,在Windows中控件的身影无处不在,各种各样的按钮、文本框、无线钮,都是控件的种类,VB把这些控件模式化,并且每个控件都有若干属性用来控制控件的外观,工作方法。这样你就可以象在画板上一样,随意点几下鼠标,一个按钮就完成了,这些在以前的编程语言下是要经过相当复杂的工作的。

第一章 软件介绍

(一) Visual BASIC程序设计

VB提供了开发基于对象的可视化程序开发工具,“Visual”指的是开发图形用户界面的方法。

一、VB的发展历史

BASIC语言诞生于19xx年,基本?扩展?结构化BASIC语言在使用中得到了不断的发展。VB的出现更使得BASIC成为计算机技术发展史上应用最广泛的语言。 微 19xx年

软 19xx年 Visual Basic 2.0 DOSWindows 3.x环境

公 19xx年4月 Visual Basic 3.0 下16个程序

司 19xx年10月

推 19xx年 Visual Basic 5.0 Windows 9.x或Windows

出 19xx年 Visual Basic 6.0 NT OS

二、Visual Basic 6.0 的基本特点

1. 可视化的编程工具

2. 面向对象的设计方法(coop)花更少的时间做更多的事情

3. 事件驱动的编程机制

4. 结构化的程序设计语言

5. 交互式开发方式

6. 共享Windows资源

7. 开放的数据库功能与网络支持

8. 得心应手的应用程序向导

9. 完善的联机帮助功能

三、VB 6.0 版体

1. 学习版:基础版 可用来开发Windows9.x 和Windows NT下的应用程序

2. 专业版:为计算机专业人员提供了一套功能完整的工具

3. 企业版:可开发功能强大的组内分布式应用程序

(二) 设计最简单的VB应用程序

2.1 VB 6.0的安装与帮助文件的使用

一、系统的安装环境

软件和硬件两个方面

1. 操作系统:Windows 9.5 NT4.0及其以上

2. 微处理器:

3. 内存:24MB以上;32MB以上

4. 硬盘空间:

5. 其他设备:CD-ROM驱动器 .Mouse.

二、VB 6.0的安装步骤

6. 启动安装程序

7. 输入产品量和用户ID

8. 选择安装路径

9. 选择安装方式

三、添加或删除VB6.0组件

10. 再次运行安装程序

11. 在“安装向导”的“添加/删除选项”中选择

12. 改变安装组件后,单击“继续”按钮

四、帮助文件的使用

13. 使用MSDN Library在线帮助

通过菜单“帮助”?“内容”,打开MSDN Library窗口

14. 上下文相关帮助

启动VB 6.0后,在“代码窗口”中将光标插入点,置于一个关键词中并按下

F1,就会显示有关该关键词的帮助信息。详见P7。

2.2 VB 6.0的开发环境

Microsoft应用软件常规的标题栏、菜单栏和工具栏,以及VB 6.0的几个独立窗口。

标题栏:标题为“工程1—Microsoft Visual Basic[设计]”,说明此时开发环境处于设计

模式,在进入其他状态时,方括号中的文字将做相应的变化,VB有三种工作模式:

?设计模式:可进行用户界面的设计和代码的编制,来完成应用程序的开发;

?运行模式:运行应用程序,此时不可编辑代码和界面;

?中断模式:应用程序运行暂时中断,可编辑代码,但不可编辑界面。按F5或单击“继

续”按钮,程序继续运行,单击“结束”按钮,停止程序。

一、工程资源管理器

它保存一个应用程序所有属性以及组成这个应用程序的所有文件。工程文件的扩展名

为.vbp。

1.工程资源资源管理器窗口的三个按钮:

?“查看代码”按钮:切换到代码窗口,显示和编辑代码

?“查看对象”按钮:切换到窗体窗口,显示和编辑对象

?“切换文件夹”按钮:切换文件佳吓唬司的方式

2.列表窗口的工程文件类型

?窗体文件(.frm文件):存储窗体上使用的所有控件对象和有关的属性。对象相应的

时间过程、程序代码。一个程序至少包含一个窗体文件。

?标准模块文件(.bas被应用程序各处调用的过程)。

注意:括号内的有扩展名已保存过,否则未保存P9。

二、对象窗口

对象窗口中包含一个窗体窗口,窗体是VB应用程序的主要构成部分,每个窗口必须有

一个唯一的窗体名字。

设计状态的窗体由网络点构成。网络点的间距可以通过“工具”菜单?“选项”命令?

“通用”标签?“窗体设置网格”中输入“宽度”和“高度”来改变。

除了一般窗体外,还有一种MDI(Multiple Document Interpace)多文档窗体,它可包含各

自独立的子窗体。

三、工具箱

控件构成VB 6.0窗口程序的GUI的最主要的部分。而工具箱则是控件的“窗容器”。

1.组成(基本组成)

初始状态下,工具箱窗口由21个被绘制成按钮形式的图标组成。显示了各种控件的

制作工具。窗口中的20个控件称标准控件(注:指令不是控件,仅用于移动窗体和控件及

调整他们的大小)

2.工具箱窗口的显示及关闭

在“视图”菜单?“工具箱”命令

运行状态下的工具箱窗口自动隐去。

3.新控件的添加

具箱除了已有的“通用(Greneral)”控件,还可添加VB 6.0提供的具有各功能的Activex

控件,步骤如下:

(1)单击工具箱的空白处,在弹出的快捷菜单中选择“部件”或“工程”菜单?“部

件”

(2)在部件对话框中选择要添加的控件。

4.选项卡的添加

工具箱空白处单击右键?“添加选项卡”?名称?确定。

四、属性窗口

所有窗体或控件的属性,如颜色、字体、大小等,都可通过心属性窗口来修改。属性窗口由四部分组成:

1.对象列表框:单击右边的下拉按钮,可打开所选窗体所含对象的列表

2.属性显示排列方式:“按字母序“和”“分类序”

3.属性列表框:左边是各种属性,右边是相应的属性而不同属性的设置方式不同:

(1)直接输入:eg: Caption

(2)选取项目:eg: BorderStgle

(3)对话框:eg: Icon

4.属性说明

五、窗体布局窗口

用于指定程序运行时的初始位置。主要为使所开发的应用程序能在各不同分辨率的屏幕上正常运行,在多窗体应用程序中较有用。

六、代码窗口

1.窗口的打开(三种方法)

(1)从工程窗口中选择一个窗体或标准模块,并选择“查看代码:按钮

(2)从窗体窗口中打开代码窗口,可用鼠标双击一个控件或窗体本身;

(3)从“视图“菜单中选择”代码窗口“命令。

2.窗口组成

(1)“对象”下拉式列表框:显示所选对象的名称。其中“通用”表示与特定对象无关的通用代码,一般在此声明模块级变量或用户编写自定义的过程。

(2)“过程”下拉式列表框:列出所有对应于“对象”列表框中对象的事件过程名称(还可显示用户自定义的过程名)。选择对象名和事件过程名即可构成选中对象的事件过程模板,用户可在该模板内输入代码。其中“声明”表示模块级变量。

(3)代码框:输入程序代码

(4)“过程查看”按钮:只能显示所选的一个过程

(5)“全模块查看”按钮:显示模块中令部过程。

2.3 VB6.0程序开发的基本步骤

建立一个应用程序的步骤:

(1)建立用户界面的对象

(2)对象属性的设置

(3)对象事件过程及编程

(4)保存和运行程序

例2.1 编写一个对输入字符进行转换的程序。转换规则为:将其中的大写字母转换成大写字母,空格不转换,其余转换成“*”。要求每输入一个字符,马上就进行判断和转换。

一、建立用户界面的对象

1.新建一个工程:“文件”?菜单?“新建工程”

2.本例共涉及6个对象

2个Label(标签):只能显示信息,不能输入

2个TextBox(文本框):即可输入又可显示数据

2个Command Button:执行有关操作而窗体是上述对象的一个载体。建立的用户界面的对象如下图所示:

PingIP地址工具

二、对象属性的设置

步骤及方法:(1)选定要设置的对象

(2)修改属性

在VB程序设计中,许多功能已封装在对象内部,因此,在程序设计时,只要编写少量的代码就能满足某些功能要求。

根据本例要求:

1.当在“输入字符串“文本框每键入一个字符键,马上就进行判断,这就要求对“输入字符串”文本对象Text1对应的keyPress事件进行编程,其事件过程编程的步骤如下:

(1)单击“对象”列表框的下拉按钮,列出与Text1相关的所有事件,选择Text1; (2)单击“对象”列表框的下拉按钮,列出与Text1相关的所有事件,选择Key Press

事件。此时代码窗口就显示出Text1-KeyPress事件代码的模板

PingIP地址工具

Private Sub Text1_Key Press (Key ASCII As Integer) 模 板

End Sub

在过程体加入代码

Private Sub Test1_Key Press (KeyAscii As Integer)

Dim aa As String*1

aa = Chr$ (KeyAscii) ’将ASCII码转换为字符

Select Case aa 注意:若窗体上各控件的字号等属性要设置相同的大小,不要逐个设置,只要在建立控件前,将窗体的字号等属性进行设置,以后建立的控件都有该默认属性值。 三、对象事件过程及编

Case “A” To “Z” ’大写转换成小写aa=Chr$(Key ASCII+32)

Case “a” To “z” ’小写转换成大aa=Chr$(Key ASCII-32)

Case “ ” ’空格不转换

Case Else ’其他转换成*

aa= “*”

End Select

’将转换文本框已有的内容与刚输入并转换的字符连接

Text2.Text=Text2.Text & aa

End Sub

2.当单击“清屏”按钮时,清除两个文本框的所有内容,就要对命令按钮对象Command1对应的click事件编程。

Private Sub Command1_Click()

Text1.Text= “”

Text2.Text= “”

End Sub

3.当单击“结束”命令按钮时,程序运行结束,这要对Command2对应的click事件编程。

Private Sub Command 2_ Click ()

End

End Sub

四、保存和运行程序

1.保存工程

2.程序的运行

在VB中,程序可以以两种模式运行,即编译运行模式和解释运行模式。

(1)编译运行模式

选择“文件”菜单的“生成??exe”命令后,系统读取程序中全部代码,将其转换为机器码,并在扩展名为.exe的可执行文件中,供以后多次运行。

(2)解释运行模式

选择“运行”菜单的“启动”命令(或F5),直接运行。由于转换后的机器代码不保存,如需再次运行程序,必须再解释一次,因此运行速度比编译运行模式慢。在开发阶段为了便于程序的调试,一般使用此模式。

第二章 程序功能

这个程序可以Ping任何IP地址。Ping是个十分有用的工具,是用Ping命令,能确认一个主机是否连接到了网络上,也能区分毛病是出在网络硬件问题还是出在不匹配问题上。确认计算机与网络是否联通的最好方法就是Ping一下想要连接的网络主机的IP地址。

PingIP地址工具

该程序通过键入主机名、IP地址发送数据,得到返回状态、地址、时间数据包大小返回数据指针。

第三章 程序设计

Option Explicit

Private Const IP_STATUS_BASE As Long = 11000

Private Const IP_SUCCESS As Long = 0

Private Const IP_BUF_TOO_SMALL As Long = (11000 + 1)

Private Const IP_DEST_NET_UNREACHABLE As Long = (11000 + 2)

Private Const IP_DEST_HOST_UNREACHABLE As Long = (11000 + 3) Private Const IP_DEST_PROT_UNREACHABLE As Long = (11000 + 4) Private Const IP_DEST_PORT_UNREACHABLE As Long = (11000 + 5) Private Const IP_NO_RESOURCES As Long = (11000 + 6)

Private Const IP_BAD_OPTION As Long = (11000 + 7)

Private Const IP_HW_ERROR As Long = (11000 + 8)

Private Const IP_PACKET_TOO_BIG As Long = (11000 + 9)

Private Const IP_REQ_TIMED_OUT As Long = (11000 + 10)

Private Const IP_BAD_REQ As Long = (11000 + 11)

Private Const IP_BAD_ROUTE As Long = (11000 + 12)

Private Const IP_TTL_EXPIRED_TRANSIT As Long = (11000 + 13)

Private Const IP_TTL_EXPIRED_REASSEM As Long = (11000 + 14)

Private Const IP_PARAM_PROBLEM As Long = (11000 + 15)

Private Const IP_SOURCE_QUENCH As Long = (11000 + 16)

Private Const IP_OPTION_TOO_BIG As Long = (11000 + 17) Private Const IP_BAD_DESTINATION As Long = (11000 + 18) Private Const IP_ADDR_DELETED As Long = (11000 + 19) Private Const IP_SPEC_MTU_CHANGE As Long = (11000 + 20) Private Const IP_MTU_CHANGE As Long = (11000 + 21) Private Const IP_UNLOAD As Long = (11000 + 22)

Private Const IP_ADDR_ADDED As Long = (11000 + 23)

Private Const IP_GENERAL_FAILURE As Long = (11000 + 50) Private Const MAX_IP_STATUS As Long = (11000 + 50) Private Const IP_PENDING As Long = (11000 + 255) Private Const PING_TIMEOUT As Long = 500

Private Const WS_VERSION_REQD As Long = &H101

Private Const MIN_SOCKETS_REQD As Long = 1

Private Const SOCKET_ERROR As Long = -1

Private Const INADDR_NONE As Long = &HFFFFFFFF Private Const MAX_WSADescription As Long = 256 Private Const MAX_WSASYSStatus As Long = 128

Private Type WSADATA

wVersion As Integer

wHighVersion As Integer

szDescription(0 To MAX_WSADescription) As Byte szSystemStatus(0 To MAX_WSASYSStatus) As Byte wMaxSockets As Long

wMaxUDPDG As Long

dwVendorInfo As Long

End Type

Private Type ICMP_OPTIONS

Ttl As Byte

Tos As Byte

Flags As Byte

OptionsSize As Byte

OptionsData As Long

End Type

Public Type ICMP_ECHO_REPLY

Address As Long

status As Long

RoundTripTime As Long

DataSize As Long

'Reserved As Integer

DataPointer As Long

Options As ICMP_OPTIONS

Data As String * 250

End Type

Private Type HOSTENT

hName As Long

hAliases As Long

hAddrType As Integer

hLen As Integer

hAddrList As Long

End Type

Private Declare Function gethostbyname Lib "WSOCK32.DLL" _ (ByVal hostname As String) As Long

Private Declare Sub CopyMemory Lib "kernel32" _

Alias "RtlMoveMemory" _

(xDest As Any, _

xSource As Any, _

ByVal nbytes As Long)

Private Declare Function lstrlenA Lib "kernel32" _

(lpString As Any) As Long

Private Declare Function WSAStartup Lib "WSOCK32.DLL" _

(ByVal wVersionRequired As Long, _

lpWSADATA As WSADATA) As Long

Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long

Private Declare Function IcmpCreateFile Lib "icmp.dll" () As Long

Private Declare Function IcmpCloseHandle Lib "icmp.dll" _ (ByVal IcmpHandle As Long) As Long

Private Declare Function IcmpSendEcho Lib "icmp.dll" _

(ByVal IcmpHandle As Long, _

ByVal DestinationAddress As Long, _

ByVal RequestData As String, _

ByVal RequestSize As Long, _

ByVal RequestOptions As Long, _

ReplyBuffer As ICMP_ECHO_REPLY, _

ByVal ReplySize As Long, _

ByVal Timeout As Long) As Long

Private Declare Function inet_addr Lib "WSOCK32.DLL" _

(ByVal s As String) As Long

Public Function Ping(sAddress As String, _

sDataToSend As String, _

ECHO As ICMP_ECHO_REPLY) As Long

'如果Ping成功,则RoundTripTime = time以毫秒为单位记录了完成整个过程的时间,

'.Data表示的是返回的数据,Address实际应答的主机的IP地址, '.DataSize表示返回数据的长度,Status的值将为0。

'如果失败,则Status返回一个错误代码。

Dim hPort As Long

Dim dwAddress As Long

'转换IP地址字符串为一个符合因特网规范的long地址

dwAddress = inet_addr(sAddress)

'如果dwAddress地址有效

If dwAddress <> INADDR_NONE Then

'打开端口

hPort = IcmpCreateFile()

'如果成功打开端口

If hPort Then

'ping

Call IcmpSendEcho(hPort, _

dwAddress, _

sDataToSend, _

Len(sDataToSend), _

0, _

ECHO, _

Len(ECHO), _

PING_TIMEOUT)

'ping成功后,返回status

Ping = ECHO.status

'关闭端口句柄

Call IcmpCloseHandle(hPort)

End If 'If hPort

Else:

'可能是地址格式无效

Ping = INADDR_NONE

End If

End Function

Public Function GetStatusCode(status As Long) As String

Dim msg As String

Select Case status

Case IP_SUCCESS: msg = "ip成功"

Case INADDR_NONE: msg = "inet_addr:错误的IP格式" Case IP_BUF_TOO_SMALL: msg = "ip缓存太小"

Case IP_DEST_NET_UNREACHABLE: msg = "ip目的网络无法抵达" Case IP_DEST_HOST_UNREACHABLE: msg = "ip目的主机无法抵达" Case IP_DEST_PROT_UNREACHABLE: msg = "ip目的网络无法抵达" Case IP_NO_RESOURCES: msg = "ip无资源"

Case IP_BAD_OPTION: msg = "ip错误选项"

Case IP_HW_ERROR: msg = "ip hw错误"

Case IP_PACKET_TOO_BIG: msg = "ip包太大"

Case IP_REQ_TIMED_OUT: msg = "ip请求超时"

Case IP_BAD_REQ: msg = "ip错误请求"

Case IP_BAD_ROUTE: msg = "ip错误路由"

Case IP_TTL_EXPIRED_TRANSIT: msg = "ip ttl expired transit" Case IP_TTL_EXPIRED_REASSEM: msg = "ip ttl expired reassem" Case IP_PARAM_PROBLEM: msg = "ip参数出错"

Case IP_SOURCE_QUENCH: msg = "ip资源被破坏"

Case IP_OPTION_TOO_BIG: msg = "ip选项太大"

Case IP_BAD_DESTINATION: msg = "ip错误目标"

Case IP_ADDR_DELETED: msg = "ip地址已被删除" Case IP_SPEC_MTU_CHANGE: msg = "ip spec mtu change" Case IP_MTU_CHANGE: msg = "ip mtu_change"

Case IP_UNLOAD: msg = "ip未装载"

Case IP_ADDR_ADDED: msg = "ip地址已加载"

Case IP_GENERAL_FAILURE: msg = "ip一般错误"

Case IP_PENDING: msg = "ip持续"

Case PING_TIMEOUT: msg = "ping超时"

Case Else: msg = "返回了未知消息"

End Select

GetStatusCode = CStr(status) & " [ " & msg & " ]"

End Function

Public Function GetIPFromHostName(ByVal sHostName As String) As String '将主机名转换为IP地址

Dim nbytes As Long

Dim ptrHosent As Long 'hostent结构的地址

Dim ptrName As Long 'name指针的地址

Dim ptrAddress As Long 'address指针的地址

Dim ptrIPAddress As Long

Dim sAddress As String

sAddress = Space$(4)

ptrHosent = gethostbyname(sHostName & vbNullChar)

If ptrHosent <> 0 Then

'分配指针的地址与偏移量

'ptrName是主机的官方名,如果使用DNS或类似的解析系统,则它是完全合格域名

'(FQDN:Fully Qualified Domain Name),这会导致服务器返回一个应答信息。

'如果使用本地主机文件,则它是IP地址后的第一个入口。

ptrName = ptrHosent

'以空字符结尾的主机地址,该地址是HOSENT的开始地址偏移了12个字节后的地址。

'注意:这里只返回第一个地址。要想返回更多的信息,定义sAddress为一个字符串数组。

'然后循环处理返回的4字节的ptrIPAddress成员。

ptrAddress = ptrHosent + 12

'获得IP地址

CopyMemory ptrName, ByVal ptrName, 4

CopyMemory ptrAddress, ByVal ptrAddress, 4

CopyMemory ptrIPAddress, ByVal ptrAddress, 4

CopyMemory ByVal sAddress, ByVal ptrIPAddress, 4

GetIPFromHostName = IPToText(sAddress)

End If

End Function

Private Function IPToText(ByVal IPAddress As String) As String

IPToText = CStr(Asc(IPAddress)) & "." & _

CStr(Asc(Mid$(IPAddress, 2, 1))) & "." & _

CStr(Asc(Mid$(IPAddress, 3, 1))) & "." & _

CStr(Asc(Mid$(IPAddress, 4, 1)))

End Function

Public Sub SocketsCleanup()

If WSACleanup() <> 0 Then

MsgBox "终止Windows Sockets时发生了错误", vbExclamation End If

End Sub

Public Function SocketsInitialize() As Boolean

Dim WSAD As WSADATA

SocketsInitialize = WSAStartup(WS_VERSION_REQD, WSAD) = IP_SUCCESS End Function

第四章 窗口设计

Option Explicit

Private Sub Command1_Click()

Dim ECHO As ICMP_ECHO_REPLY

Dim pos As Long

Dim success As Long

Dim sIPAddress As String

If SocketsInitialize() Then

'将主机名转换为IP地址

sIPAddress = GetIPFromHostName(Text1.Text) Text2.Text = sIPAddress

'用传递过来的地址、使用的文本和ECHO结构去ping得到的ip success = Ping(sIPAddress, (Text3.Text), ECHO) '显示结果

Text4(0).Text = GetStatusCode(success)

Text4(1) = ECHO.Address

Text4(2) = ECHO.RoundTripTime & " 毫秒"

Text4(3) = ECHO.DataSize & " 字节"

If Left$(ECHO.Data, 1) <> Chr$(0) Then

pos = InStr(ECHO.Data, Chr$(0))

Text4(4) = Left$(ECHO.Data, pos - 1)

End If

Text4(5) = ECHO.DataPointer

SocketsCleanup

Else

MsgBox "32位Windows套接字初始化失败"

End If

End Sub

PingIP地址工具

第五章 结论

在本次作品制作中我学到了很多东西,以下是我总结的一些编辑过程中需要注意的地方:

1、“&”替换“+”

在很多人的编程语言中,用“+”来连接字符串,这样容易导致歧义。良好的习惯是用“&”来连接字符串。 不正确:

Dim sMessage As String

sMessage = "1" + "2"

正确:

Dim sMessage As String

sMessage = "1" & "2"

注意:"&"的后面有个空格

2、变量命名大小写,语句错落有秩,源代码维护方面

下面大家比较一下以下两段代码:

读懂难度很大的代码:

Dim SNAME As String

Dim NTURN As Integer

If NTURN = 0 Then

If SNAME = "vbeden" Then

Do While NTURN < 4

NTURN = NTURN + 1

Loop

End If

End If

容易读懂的代码:

Dim sName As String

Dim nTurn As Integer

If nTurn = 0 Then

If sName = "vbeden" Then

Do While nTurn < 4

nTurn = nTurn + 1

Loop

End If

End If

3、请养成以下的“对象命名约定”良好习惯

应用程序频繁使用许多菜单控件,对于这些控件具备一组唯一的命名约定很实用。除了最前面 "mnu" 标记以外,菜单控件的前缀应该被扩展:对每一级嵌套增加一个附夹馨缀,将最终的菜单的标题放在名称字符串的最后。下表列出了一些例子。

当使用这种命名约定时,一个特定的菜单组的所有成员一个接一个地列在 Visual Basic 的“属性”窗口中。而且,菜单控件的名字清楚地表示出它们所属的菜单项。

为其它控件选择前缀

对于上面没有列出的控件,应该用唯一的由两个或三个字符组成的前缀使它们标准化,以保持一致性。只有当需要澄清时,才使用多于三个字符的前缀。

常量和变量命名约定

除了对象之外,常量和变量也需要良好格式的命名约定。本节列出了 Visual Basic 支持的常量和变量的推荐约定。并且讨论标识数据类型和范围的问题。

变量应该总是被定义在尽可能小的范围内。全局 (Public) 变量可以导致极其复杂的状态机构,并且使一个应用程序的逻辑非常难于理解。全局变量也使代码的重用和维护更加困难。

在 Visual Basic 的应用程序中,只有当没有其它方便途径在窗体之间共享数据时才使用全局变量。当必须使用全局变量时,在一个单一模块中声明它们,并按功能分组。给这个模块取一个有意义的名称,以指明它的作用,如 Public.bas。

较好的编码习惯是尽可能写模块化的代码。例如,如果应用程序显示一个对话框,就把要完成这一对话任务所需要的所有控件和代码放在单一的窗体中。这有助于将应用程序的代码组织在有用的组件中,并减小它运行时的开销。

除了全局变量(应该是不被传递的),过程和函数应该仅对传递给它们的对象操作。在过程中使用的全局变量应该在过程起始处的声明部分中标识出来。此外,应该用 ByVal 将参数传递给 Sub 过程及 function 过程,除非明显地需要改变已传递的参数值。

随着工程大小的增长,划分变量范围的工作也迅速增加。在类型前缀的前面放置单字母范围前缀标明了这种增长,但变量名的长度并没有增加很多。

如果一个变量在标准模块或窗体模块中被声明为 Public,那么该变量具有全局范围。如果一个变量在标准模块或窗体模块中被分别声明为 Private,那么该变量有模块级范围。

注意: 一致性是卓有成效地使用这种技术的关键;Visual Basic 中的语法检查器不会捕捉以 "p." 开头的模块级变量。

常量

常量名的主体是大小写混合的,每个单词的首字母大写。尽管标准 Visual Basic 常量不包含数据类型和范围信息,但是象 i、s、g 和 m 这样的前缀对于理解一个常量的值和范围还是很有用的。对于常量名,应遵循与变量相同的规则。例如:

mintUserListMax '对用户列表的最大限制

'(整数值,本地到模块)

gstrNewLine '新行字符

'(字符串,应用程序全局使用)

变量

声明所有的变量将会节省编程时间,因为键入操作引起的错误减少了(例如,究竟是 aUserNameTmp,还是 sUserNameTmp,还是 sUserNameTemp)。在“选项”对话框的“编辑器”标签中,复选“要求变量声明”选项。Option Explicit 语句要求在 Visual Basic 程序中声明所有的变量。

应该给变量夹馨缀来指明它们的数据类型。而且前缀可以被扩展,用来指明变量范围,特别是对大型程序。

用下列前缀来指明一个变量的数据类型。

描述变量和过程名

变量或过程名的主体应该使用大小写混合形式,并且应该足够长以描述它的作用。而且,函数名应该以一个动词起首,如 InitNameArray 或 CloseDialog。

对于频繁使用的或长的项,推荐使用标准缩略语以使名称的长度合理化。一般来说,超过 32 个字符的变量名在 VGA 显示器上读起来就困难了。

当使用缩略语时,要确保它们在整个应用程序中的一致性。在一个工程中,如果一会儿使用 Cnt, 一会儿使用 Count,将导致不必要的混淆。

用户定义的类型

在一项有许多用户定义类型的大工程中,常常有必要给每种类型一个它自己的三个字符的前缀。如果这些前缀是以 "u" 开始的,那么当用一个用户定义类型来工作时,快速识别这些类型是很容易的。例如,ucli 可以被用来作为一个用户定义的客户类型变量的前缀。

4、在简单的选择条件情况下,使用IIf()函数

罗索的代码:

If nNum = 0 Then

sName = "sancy"

Else

sName = "Xu"

End If

简单的代码:

sName=IIf(nNum=0,"sancy","Xu")

5、尽量使用Debug.Print进行调试

在很多初学者的调试中,用MsgBox来跟踪变量值.其实用Debug.Print不仅可以达到同样的功效,而且在程序最后编译过程中,会被忽略.而MsgBox必须手动注释或删除.

通常:

MsgBox nName

应该: Debug.Print nName

6、在重复对某一对象的属性进行修改时,尽量使用With....End With

通常:

Form1.Height = 5000

Form1.Width = 6000

Form1.Caption = "This is MyLabel"

应该:

With Form1

.Height = 5000

.Width = 6000

.Caption = "This is MyLabel"

End With

这种结构程序执行效率比较高,特别在循环语句里。

7、MsgBox中尽量使用消息图标,这样程序比较有规范

一般来说

vbInformation 用来提示确认或成功操作的消息

vbExclamation 用来提示警告的消息

vbCritical 用来提示危机情况的消息

vbQuestion 用来提示询问的消息

8、在可能的情况下使用枚举

枚举的格式为

[Public | Private] Enum name

membername [= constantexpression]

membername [= constantexpression]

....

End Enum

Enum 语句包含下面部分:

说明

所谓枚举变量,就是指用 Enum 类型定义的变量。变量和参数都可以定义为 Enum 类型。Enum 类型中的元素被初始化为 Enum 语句中指定的常数值。所赋给的值可以包括正数和负数,且在运行时不能改变。例如:

Enum SecurityLevel IllegalEntry = -1 SecurityLevel1 = 0 SecurityLevel2 = 1 End Enum

Enum 语句只能在模块级别中出现。定义 Enum 类型后,就可以用它来定义变量,参数或返回该类型的过程。不能用模块名来限定 Enum 类型。类模块中的 Public Enum 类型并不是该类的成员;只不过它们也被写入到类型库中。在标准模块中定义的 Enum 类型则不写到类型库中。具有相同名字的 Public Enum 类型不能既在标准模块中定义,又在类模块中定义,因为它们共享相同的命名空间。若不同的类型库中有两个 Enum 类型的名字相同,但成员不同,则对这种类型的变量的引用,将取决于哪一个类型库具有更高的引用优先级。

不能在 With 块中使用 Enum 类型作为目标。

Enum 语句示例

下面的示例演示用 Enum 语句定义一个命名常数的集合。在本例中是一些可以选择的颜色常数用于设计数据库的数据输入窗体。

Public Enum InterfaceColors

icMistyRose = &HE1E4FF&

icSlateGray = &H908070&

icDodgerBlue = &HFF901E&

icDeepSkyBlue = &HFFBF00&

icSpringGreen = &H7FFF00&

icForestGreen = &H228B22&

icGoldenrod = &H20A5DA&

icFirebrick = &H2222B2&

End Enum

参考文献

《 Visual Basic程序设计与应用开发 案例教程》 梁曦 主编 中国电力出版社

《Visual Basic实验指导与测试》第二版》 龚沛曾、陆慰民、杨志强编 高等教育出版社

更多相关推荐:
shopping online范文

WiththedevelopmentoftheInternetandthepopularizationofcomputershoppingonlineisnormalandevennecessaryinourlifeAsmanyo...

Online shopping作文汇总

Onlineshopping四级作文OnlineShopping关于网上购物ShoppingontheInternetDirectionsyouarerequiredtowritea150wordessayon...

Online shopping 英语作文五篇

OnlineShopping一WiththedevelopmentoftheInternetandthepopularizationofcomputershoppingonlineisnormalandeven...

六级四级范文online shopping

OnlineShopping张玲Afterthreedecadesofreformandopeningwiththedramaticdevelopmentofsciencetechnologyandeconom...

Online shopping

Onlineshopping1现在网上购物已成为一种时尚2网上购物有很多好处但也有不少问题3我的建议Nowadaysonlineshoppingisbecomingmuchmorepopularandfashi...

英语作文范文Shopping Online

OnlineShoppingThemoderntechnologyhaschangedmyshoppinghabitsIbuyalmosteverythingontheInternetsuchasbooksclothesandel...

Online shopping

OnlineshoppingOnlineshoppingoronlineretailingisaformofelectroniccommercewhichallowsconsumerstodirectlybuy...

Online shopping or In-store shopping

OnlineshoppingorInstoreshoppingWiththerapiddevelopmentofscienceandtechnologylivingstandardshavebeenimprovedForthisI...

网上购物 Shopping Online

网上购物ShoppingOnlineWiththedevelopmentofinformationindustrytherearemoreandmorepeopleshoppingonlineShoppingo...

网上购物 Online Shopping_0

网上购物OnlineShoppingWiththerapiddevelopmentofoursocietymoreandmorepeoplearefondofonlineshoppingforitsconven...

Unit 2 Shopping Online

Unit2ShoppingOnline教学目的和要求Teachingaimsanddemands类别要求掌握的语言知识和语言能力要点话题Basicknowledgeaboutshoppingonlineandb...

Online Shopping

MajorAdvantagesofOnlineShoppingWiththedevelopmentoftheInternetandthepopularizationofcomputeronlineshoppinghasbecome...

online shopping(57篇)