程序的代碼以及說明如下:
‘本程序在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).Listen'Winsock1繼續監聽
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來編寫這種程序十分簡單。