只要掌握了原理,你也能写出一个所谓的“***”程序。下面笔者带领你们用VB亲自编写一个远程控制程序。从而揭开它的神秘面纱。
1、所用控件
在程序中将使用Winsock控件。Winsock控件是一个ActiveX控件,使用TCP协议或UDP协 议链接到远程计算机上并与之交换数据。和定时器控件同样,Winsock控件在运行时是不可见的。Winsock的工做原理是:客户端向服务器端发出链接请求,服务器端则不停地监听客户端的请求,当二者的协议沟通时,客户端和服务器端之间就创建了链接,这时客户端和服务器端就能够实现双向数据传输。实际编程中,必须分别创建一个服务器端应用程序和一个客户端应用程序,两个应用程序中分别有本身的Winsock控件。首先设置Winsock控件使用的协议,这里咱们使用TCP协议。如今,让咱们开始用VB创建两个程序,一个是客户端程序myclient,另外一个是服务器端程序myserver。
2、编写客户端程序
首先来建客户端程序myclient。在myclient程序中创建一个窗体,加载Winsock控件,称为tcpclient,表示使用的是 TCP协议,再加入两个文本框(text1和text2),用来输入服务器的IP地址和端口号,而后创建一个按钮(cd1),用来创建链接,按下以后就能够对链接进行初始化了,代码以下:
private sub cd1_click()
tcpclient.romotehost=text1.text
tcpclient.romoteport=val(text2.text)'端口号,缺省为1001
tcpclient.connect '调用connect方法,与指定IP地址的计算机进行链接
cd1.enabled=false
end sub
链接以后就是如何处理所收到的数据的问题了。客户端和服务器端创建链接后,若是有任何一端接收到新的数据,就会触发该端winsock控件的 dataarrival事件,在响应这个事件时,可使用getdata方法得到发送来的数据。好比能够在tcpclient的dataarrival事件中编写代码以下:
private sub tcpclient_dataarrival(byval bytestotal as long)
dim x as string
tcpclient.getdata x '使用getdata得到发送来的数据
.......
End sub
后面的省略部分表示对接收到的数据进行的具体处理,读者能够根据实际状况编写。
3、编写服务器端程序
先创建一个窗体,加载Winsock控件,名称为tcpserver。另外在窗体上加入一个文本框text1用来显示客户机的IP地址和客户机发送过来的数据信息。
当客户端程序运行时,在客户端程序按下链接按钮后,客户端向服务器端程序请求链接,这时服务器端的connectionrequest事件被触发,因此服务器端程序要解决链接问题,可使用connectionrequest事件完成此功能。代码以下:
'在窗体的load事件中对tcpserver控件进行初始化
private sub form_load()
tcpserver.localport=1001
tcpserver.listen '把服务器置于监听检测状态
end sub
'服务器端接收到客户端的链接请求,首先检查当前状态是否处于链接关闭状态
Private sub tcpclient_connectionrequest(Byval requestID as long)
If tcpserver.state<>sckclosed then '检查控件的state属性是否为关闭
Tcpserver.close '
Tcpserver.accept requestID '
End if
End sub
如今咱们在服务器端程序tcpserver的dataarrival事件中添加如下代码,以便让服务器端程序能够接收客户机端的指令,并运行相应的程序。
4、测试远程控制程序
如今,你就能够将这两个程序分别运行于两台使用TCP/IP协议联网的机器了。在客户机端你按下链接按钮,再输入“c:mmand.com”,能够看到在服务器端马上打开一个DOS窗口,设想一下,若是它运行一些破坏性的命令会发生什么事情?这就是一个最基本的远程控制程序。固然,真正的***程序要复杂得多,但基本原理是相同的。如今你该恍然大悟了吧?