基于VB的连接测试端口扫描程序

2009-02-05 06:18
科教导刊 2009年23期
关键词:客户机控件监听

陈 翀

摘要在VB语言设计中 Winsock控件对用户是不可视的,可以很容易地访问TCP和UDP网络服务。要编写客户和服务器应用程序,不需要了解TCP或调用底层Winsock API的具体细节。通过设置Winsock控件的属性和调用该控件的方法,可以很容易地连接到远程计算机并进行双向的数据交换。

关键词VB Winsock

中图分类号:TP3文献标识码:A

1 VB语言的简介

20世纪70年代末,Microsoft在当时的PC机上开发了第一代的Basic语言,随着Windows操作系统的不断成熟,Visual Basic产品由1.0版升级到3.0版,此时 Visual Basic已初具规模了。

随着Internet的迅猛发展,Microsoft的ActiveX技术出现了,并被不失时机地加入到 Visual Basic 5.0版本中(1997年)。在1998年,Microsoft推出了Visual Basic 6.0版本,这一版本使VB得到了很大的扩充和增强。它还引入了使用部件编程的概念。迄今为止,Visual Basic已经发展成为快速应用程序开发工具的代表。

2 连接测试

此程序分别安装在两台不同计算机上,并连接在LAN上,一台为主机,一台为客户机。主机一直监听所设定的端口。客户机上设主机的IP,设好主机端口,点击连接键,客户机就与主机连接。并可互相发送信息。

2.1 设法连接主机

Private Sub cmdConnnect_Click()

cmdListen.Enabled = False

WinsockConnectTest.Close

WinsockConnectTest.Connect txtIPaddress.Text, txtTestPort

lblConnectionStatus.Caption = "通过端口 " & txtTestPort.Text & " 连接 " & txtIPaddress.Text & "<|||>" & "Connecting to " & txtIPaddress.Text & " on port " & txtTestPort.Text

Timer1.Enabled = True

End Sub

2.2 监听试图连接你的主机

Private Sub cmdListen_Click()cmdConnnect.Enabled = False

WinsockConnectTest.Close

WinsockConnectTest.LocalPort = txtTestPort.Text

WinsockConnectTest.Listen

lblConnectionStatus.Caption = "正在监听/Listening on port " & txtTestPort.Text

End Sub

2.3 检查网络是否连接

Private Sub lblCheckConnection_Click()

If Not WinsockConnectTest.State = 7 Then

lblCheckConnection.Caption = "连接/Connected: 否/No"

Else

lblCheckConnection.Caption = "连接/Connected: 是/Yes"

End If

End Sub

2.4 当客户机试图连接主机时,程序将关注连接状态

Private Sub Timer1_Timer() '

If Not WinsockConnectTest.State = 7 Then

lblConnectionStatus.Caption = "连接失败/Connection Failed"

WinsockConnectTest.Close

cmdConnnect.Enabled = True

cmdListen.Enabled = True

Timer1.Enabled = False

Else

If cmdListen.Enabled = True Then

lblConnectionStatus.Caption = "连接/Connected"

End If

End If

End Sub

2.5 当连接时,WinsockConnectTest.SendData将数据发送出去

Private Sub cmdSendDataServer_Click()

If WinsockConnectTest.State = 7 Then

Dim SendDataServer As String

SendDataServer = txtSendData.Text

WinsockConnectTest.SendData SendDataServer

Else

Beep

End If

End Sub

2.6 当接收到数据时,WinsockConnectTest.GetData将数据转为字符,并显示

Private Sub WinsockConnectTest_DataArrival(ByVal bytesTotal As Long)

Dim ServerData As String

WinsockConnectTest.GetData ServerData, (下转第186页)(上接第182页)vbString

txtDataServer.SelStart = Len(txtDataServer.Text)

txtDataServer.SelText = ServerData & vbCrLf

End Sub

3 端口扫描

本程序的这个功能为扫描当前所打开的端口,并将其端口号显示在列表中。在“主机IP地址”框中设置好要主机IP。选择是本地还是互联网扫描,设置所要扫描端口的范围和扫描速度。点击扫描运行程序:

扫描端口主要代码

Private Sub CmdScan_Click()

PortLow = txtPortLow.Text '起始端口号

PortHigh = txtPortHigh.Text '中止端口号

TimerScanner.Enabled = False

If Pause = True Then

lblShowsatwhatPort.Caption = "端口号/Port: " & AtPort & " 暂停/Pause"

Exit Sub

End If

If Start = "No" Then

Exit Sub

End If

If AtPort = PortHigh Then '检查是否扫描到所设定的最后一个端口:

Exit Sub

End If

CmdScan.Enabled = False

If optLocal.Value = True Then '如果这个为本地扫描,另一个则为互联网扫描:

Do

If Start = "No" Then

Exit Sub

End If

WinsockPortScanner.Close

DoEvents

WinsockPortScanner.Connect txtIPHostscanner.Text, AtPort

DoEvents

参考文献

[1] 龚沛曾,陆慰民,杨志强.Visual Basic程序设计教程.高等教育出版社,2000.7.

[2] 邓文新,张桂香.Visual Basic程序设计方法.北京航空航天大学出版社,2003.1.

猜你喜欢
客户机控件监听
使用“填表单”微信小程序 统计信息很方便
基于.net的用户定义验证控件的应用分析
隔山亦能打牛,本本巧变远控利器
监听“有”道 ——杰夫(美国)
升腾瘦客户机借神码翱翔“云端”
基于Web数据提高访问速度的方法
论秘密监听的立法问题
利用VF6.0的Timer控件实现动画效果
Spreadsheet控件在Delphi数据库系统中的编程与应用