程序的代码以及说明如下:
‘本程序在VB6.0+Windows2000下测试通过!
DimtmpstrAsString
DimNOW_OUTAsInteger总共出去连接的有几个Winsock
PrivateSubCommand1_Click()
ListPorts.AddItemtxtADDPORT.Text
EndSub
PrivateSubCommand2_Click()
OnErrorResumeNext
IfCommand2.Caption=”监听”Then
Fori=0ToListPorts.ListCount-1
LoadWinsock1(i 1)加载监听端口的winsock1数组控件
Winsock1(i 1).LocalPort=ListPorts.List(i)设定端口
Winsock1(i 1).Listen监听
Nexti
Command2.Caption=”停止”
Else
Fori=1ToWinsock1.Count-1
UnloadWinsock1(i)
Nexti
Fori2=1ToWinsock2.Count-1
UnloadWinsock2(i2)
Nexti2
Command2.Caption=”监听”
EndIf
EndSub
PrivateSubCommand3_Click()
UnloadMe
EndSub
PrivateSubForm_Load()
txtLOG.Text=”日志:”&vbCrLf
NOW_OUT=1
EndSub
PrivateSubWinsock1_ConnectionRequest(IndexAsInteger,ByValrequestIDAsLong)
LoadWinsock2(NOW_OUT)加载建立连接的Winsock2数组控件
Winsock2(NOW_OUT).AcceptrequestID建立连接
Winsock1(Index).Close
Winsock1(Index).ListenWinsock1继续监听
NOW_OUT=NOW_OUT 1连接的控件累加
myAddLog”来自”&Winsock1(Index).RemoteHostIP&”连接到本地端口:”&Winsock1(Index).LocalPort
显示捕获的连接
EndSub
PrivateSubWinsock2_DataArrival(IndexAsInteger,ByValbytesTotalAsLong)
Winsock2(Index).GetDatatmpstr通过Getdata捕获数据
myAddLog”来自”&Winsock2(Index).RemoteHostIP&”的数据:”&tmpstr显示捕获的数据
EndSub
SubmyAddLog(tmptextAsString)加入日志
tmptext=tmptext&vbCrLf
txtLOG.SelStart=Len(txtLOG.Text)
txtLOG.SelText=tmptext
EndSub
总结:其实一些程序的原理很简单,我们只要善于实践,并且能够把所学的只是运用到你的程序中去,我想编出类似的程序是很简单的。如木马、端口扫描器、客户端工具、CGI漏洞扫描器……。VB的Winsock控件虽说不是底层操作。及不上C语言的Socket编程的功能。但实现普通的操作还是很有用的。简单的例子就是Cookie欺骗,用VB来编写这种程序十分简单。