--》客户端程序(Client.exe)
程序界面如图[control.jpg]
防入四个命令按钮,一个标题框,一个Winsock控件,其属性设置如下:
------------------------------------------------------------------------- -
控件名 | 控件类 | 属性 | 属性值
----------------------------------------------------------------------------
closewin_but | commandbutton | caption | 远程关闭
startwin_but | commandbutton | caption | 远程重启
connect_but | commandbutton | caption | 连接
exit_but | commandbutton | caption | 退出
state_lab | label | borderstyle | 1
-----------------------------------------------------------------------------
代码如下:
Private Sub Form_Load()
Winsock1.LocalPort = 22226 注释:本地端口可任选,只要不冲突且小于65535,用
注释:netstat -an命令可查看当前通信进程
Winsock1.RemoteHost = "127.0.0.1" 注释:调试时此IP将对本机操作,实际应用时可
注释:换上被控方IP
Winsock1.RemotePort = 1334 注释:对应服务器端的localport
state_lab = "未建立连接."
End Sub
Private Sub closewin_but_Click()
If Winsock1.State <> sckConnected Then
state_lab = "请先建立连接"
Else
Winsock1.SendData "b" 注释:发出关闭命令
End If
End Sub
Private Sub startwin_but_Click()
If Winsock1.State <> sckConnected Then
state_lab = "请先建立连接"
Else
Winsock1.SendData "a" 注释:发出重启命令
End If
End Sub
Private Sub connect_but_Click()
On Error GoTo skip
If Winsock1.State = sckConnected Then
state_lab = "已建立连接了"
Else
Winsock1.Connect
End If
Exit Sub
skip: 注释:用netstat命令看到状态为Time_wait则
If Err.Number = 10048 Then 注释:须等待一段时间才可连接,也可换另一
注释:端口,可加快连接速度
MsgBox "端口正在使用,请稍后再试!", vbOKOnly, "注意!"
End
End If
End Sub
Private Sub exit_but_Click()
Winsock1.Close 注释:关闭连接且退出
End
End Sub
Private Sub Winsock1_Connect()
state_lab = "建立连接成功!可发送命令."
End Sub
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String,
ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String,
ByVal HelpContext As Long, CancelDisplay As Boolean)
MsgBox "错误", vbOKOnly, "注意!"
End
End Sub
通过上面的例子,我们大概了解了远程控制的原理,对于其他功能的实现应该不难了。如文件的下载,可先让客户程序发一命令字串注释:cc:\windows\lzh.pwl注释:,服务器接收到命令字串后判断出首字母c为下载命令,则将所指定的命令文件注释:c:\windows\lzh.pwl注释:传送给客户端,完成相应的服务。需要注意的是,此程序只能建立一个连接,如要建立多个连接可通过在服务器端产生多个Winsock实例来接受请求.
*****测试环境:
Window98,MicroSoft Visual Basic 5.0企业版
附:属性state值
常数 值 描述
sckClosed 0 关闭状态
sckOpen 1 打开状态
sckListening 2 侦听状态
sckConnectionPending 3 连接挂起
sckResolvingHost 4 解析域名
sckHostResolved 5 已识别主机
sckConnecting 6 正在连接
sckConnected 7 已连接
sckClosing 8 同级人员正在关闭连接
sckError 9 错误