手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

VB.NET开发扫描客户端服务工具

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!


Excep(0, Ai) = CInt(ipexcep.Attributes(0).Value)

Excep(1, Ai) = CInt(ipexcep.Attributes(1).Value)

Ai = Ai 1

Next

End If

For Ai = 0 To ipexcepCount - 1

If i >= Excep(0, Ai) And i <= Excep(1, Ai) Then

Console.WriteLine("跳过保留地址: " & LanID & i.ToString)

GoTo SkipIP

End If

Next

machineIP = LanID & i.ToString ‘IP地址

‘以下触发线程以,得到服务状态

Dim getSt As New GetStatus(machineIP, ServiceName, table)

Dim GetStThread As New Thread(New ThreadStart(AddressOf getSt.GetStausF))

GetStThread.Start()

ThreadCounterStarted = ThreadCounterStarted 1‘启动线程数加1

Console.WriteLine("线程" & machineIP & " 启动。检测 " & ServiceName)

‘每启动100个线程,程序主线程停止15秒,避免太多线程造成内存溢出

If (ThreadCounterStarted Mod 100) = 0 Then

Console.WriteLine("等待 .......")

Thread.CurrentThread.Sleep(15000)

GC.Collect() 'force garbage collection to aviod outOfMemory when run with long IP list

End If

SkipIP:

Next

Next

Console.WriteLine("Exiting program ...") ‘所有线程都已触发

Finish:

Thread.CurrentThread.Sleep(5000) ‘以下程序等待所有线程结束

GC.Collect()

If ThreadCounterStopped = ThreadCounterStarted And HostInfoThreadCounter.counter = HostInfoThreadCounter.counterSTOP Then‘如果触发线程等于结束线程

Dim row As Data.DataRow

For Each row In ds.Tables(table).Rows

row.Item("SysTime") = Now

Next

Purgestr = "delete " & table

Dim com1 As New SqlClient.SqlCommand(Purgestr, conn1)

com1.ExecuteNonQuery() ‘删除旧记录

sa.InsertCommand = combu.GetInsertCommand

sa.Update(ds, table) ' 将新记录写入数据库

Else

GoTo Finish ' goto finish and wait another 30 seconds

End If

End Sub

  可以利用如下命令在DOS窗口启动该程序。

Scanservice –i iplist.xml –d dbinfo.xml

  2. SCANSERVICE 数据库

  该数据库保存保存程序运行结果,以便用WEB等方式展现出来。以下是建立表的脚本,包含域名,用户名,机器名,IP以及服务状态。

CREATE TABLE [dbo].[Service] (

[IP] [varchar] (50) NULL ,

[状态] [varchar] (50) NULL ,

[用户名] [varchar] (50) NULL ,

[机器名] [varchar] (50) NULL ,

[MAC地址] [varchar] (50) NULL ,

[域] [varchar] (50) NULL ,

[超时] [varchar] (10) NULL ,

[时间安] [DateTime] (8) NULL ,

)
  总结:

  以上是一个完整的方法,也是比较简单明晰的解决方法,如果要求技巧和性能的话,还有一些地方可以做些改进,比如对线程池的使用。另外还有一些方面需要大家自己完成,比如将数据库中的信息以WEB的方式展现出来。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!