vb 验证网络

简介: 引用:http://school.cfan.com.cn/soft/sys/2006-08-18/1155878337d13185.shtml    前言常言道,攘外必先安内,服务器的正常运作,是开展一切工作的基础。

引用:http://school.cfan.com.cn/soft/sys/2006-08-18/1155878337d13185.shtml

  

前言
常言道,攘外必先安内,服务器的正常运作,是开展一切工作的基础。而在网络安全问题日益凸现的今天,监控服务器的健康状况成了管理人员的必修课。然而,通过手工操作效率过于低下。想到骇客帝国中帅呆了的Agent史密斯,其本质就是一个高级的软件机器人,那么我们能不能编写一套程序,让程序就像Agent史密斯一样自动去监视服务器的健康状况,一旦发现问题就自动通知我们呢?
要编写这么一个软件机器人,我们只要通过程序定时测试网站是否正常运行即可。其实原理并不复杂,因为用Inet控件去抓取一个Url地址时,如果地址是无法访问的,Inet控件所返回的值的长度是0。如果用循环和数组,程序还能同时监测多个网址。此外,还可以用Dir函数、Windows Script Host对象等实现从收藏夹中导入链接,使软件操作更加友善。
程序设计
以下便是笔者用Visual Basic 6编写的网站监视软件。程序需要5个按钮,作用分别是:开始监视、结束监视、添加Text1中的网址至监视列表、从监视列表中移除网址和从收藏夹列表中添加网址到监视列表;一个Inet控件(需要从工程-部件中选择),RequestTimeout设置为15(请依据个人网速设置,建议大于15);三个Listbox分别为:记录监视记录、待监视网址列表、显示收藏夹中的链接列表;两个Text框分别为:用户输入网址、显示List2中选中网址的监视信息;一个Timer控件,Enabled设置为False,Interval设置为1000。
篇幅限制,下面只列出核心代码:
Private Sub Form_Load()  'Form加载时读取收藏夹中的链接
Dim sA As String * 65400
Dim sfile As String
Dim fpath As New IWshRuntimeLibrary.WshShell
sfile = Dir(fpath.SpecialFolders("FAVORITES") & "\") '用Windows Script Host对象获得当前收藏夹位置
Do While Not Len(sfile) = 0
If UCase(Right(sfile, 4)) = ".URL" Then
Open fpath.SpecialFolders("FAVORITES") & "\" & sfile For Binary As #1 '注释:用二进制打开文件
Get #1, , sA '注释:用Get语句从文件中获取字节
xz = Split(sA, Chr(10))  '以回车作为标志分割URL中文本
For i = 0 To UBound(xz)
If UCase(Left(xz(i), 4)) = "URL=" Then  '符合格式时得到Url
List3.AddItem Right(xz(i), Len(xz(i)) - 4)
End If
Next i
Close #1 '注释:关闭文件
End If
sfile = Dir
Loop
End Sub

Private Sub Timer1_Timer() '启动监视的时候Timer执行
On Error Resume Next  '先忽略一切错误,为了能够让程序执行下去
If Inet1.StillExecuting Then Inet1.Cancel
For i = 0 To List2.ListCount - 1 '循环次数等于列表中待监测链接数
val = 0
val = Len(Inet1.OpenURL(List2.List(i)))   '网址返回的长度
If val = 0 Then     'Inet返回值的长度为零,则记录无法访问
List1.AddItem (Now & Space(6) & List2.List(i) & Space(6) & "×")
c2(i) = c2(i) + 1   '不能访问计数+1
Else
List1.AddItem (Now & Space(6) & List2.List(i) & Space(6) & "√") '反之,记录可以访问
c1(i) = c1(i) + 1   '能访问计数+1
End If
Next i
List1.AddItem Chr(10)
If List2.SelCount > 0 Then    '在Text2中显示监测结果
Text2.Text = "当前统计信息:" & Chr(10) & List2.List(List2.ListIndex) & Space(6) & "正常访问:" & c1(List2.ListIndex) & "次" & Space(6) & "不能访问:" & c2(List2.ListIndex) & "次"
End If
End Sub
注意到本文通过Timer控件与Inet控件的结合非常巧妙地模仿了多线程的机制,程序反应速度非常快,如图所示就是程序运行的界面。

需要注意的是,不同网站访问速度不同,按本文方法,只有被测网址在Inet的RequestTimeout时间内刷新完才记录正常访问,如果网速过慢,需加大RequestTimeout的值(只要不要超过Timer的Interval时间),否则软件机器人会出现误报。
后记
本文通过VB自带的Inet控件以及简单的循环便实现了一个非常实用的软件机器人,服务器的任何问题都逃不过它的眼睛。如果对于Inet控件返回的内容加以判断,还可以开发出能够监视网络连载故事是否更新的软件机器人。此外,验证自己购买的虚拟主机是否真的有如广告说的那样不间断服务,对于我们的软件机器人而言,绝对是小菜一碟。
本程序在VB6.0、Windows XP联网状态下调试通过。完整的源代码可以从http://www.cfan.com.cn/11program/200514/agent.zip下载

相关文章
|
2月前
|
机器学习/深度学习
神经网络与深度学习---验证集(测试集)准确率高于训练集准确率的原因
本文分析了神经网络中验证集(测试集)准确率高于训练集准确率的四个可能原因,包括数据集大小和分布不均、模型正则化过度、批处理后准确率计算时机不同,以及训练集预处理过度导致分布变化。
|
2月前
|
网络协议 Linux Shell
【Azure 应用服务】App Service For Linux 中安装paping, 用于验证从App Service向外请求的网络连通性
【Azure 应用服务】App Service For Linux 中安装paping, 用于验证从App Service向外请求的网络连通性
|
5月前
|
Shell Linux C语言
【Shell 命令集合 网络通讯 】Linux 验证Samba配置文件 testparm命令 使用教程
【Shell 命令集合 网络通讯 】Linux 验证Samba配置文件 testparm命令 使用教程
150 0
|
5月前
|
网络协议 Linux 网络架构
【Cisco Packet Tracer】验证聚合了不存在的网络导致的路由环路问题
【Cisco Packet Tracer】验证聚合了不存在的网络导致的路由环路问题
72 0
|
算法 小程序 网络安全
网络安全实验八 数字签名验证实验
网络安全实验八 数字签名验证实验
256 0
HTTP请求处理 get/post工具类 验证网络DEMO
HTTP请求处理 get/post工具类 验证网络DEMO
61 0
|
机器学习/深度学习 传感器 算法
【LSTM时序预测】基于长短记忆神经网络LSTM实现交通流时间序列单步预测含验证和预测未来附matlab代码
【LSTM时序预测】基于长短记忆神经网络LSTM实现交通流时间序列单步预测含验证和预测未来附matlab代码
|
机器学习/深度学习 算法 异构计算
m使用FPGA实现基于BP神经网络的英文字母识别,开发平台为vivado2019.2,verilog编程,附带matlab辅助验证
m使用FPGA实现基于BP神经网络的英文字母识别,开发平台为vivado2019.2,verilog编程,附带matlab辅助验证
282 0
m使用FPGA实现基于BP神经网络的英文字母识别,开发平台为vivado2019.2,verilog编程,附带matlab辅助验证
|
网络协议 算法 网络安全
网络基础 记一次HTTPS证书验证测试过程
网络基础 记一次HTTPS证书验证测试过程
133 0
|
机器学习/深度学习
神经网络训练,训练集99%,验证集86%怎么解?
神经网络训练,训练集99%,验证集86%怎么解?
235 0
下一篇
无影云桌面