打印

[原创] 【MSWinsock】vbs的服务,客户端!

【MSWinsock】vbs的服务,客户端!

这几天突然对脚本有一种莫名的好感,呵呵
这不,心血来潮想写一个c/s的VBS
在贴出代码之前,先介绍个函数
Wscript.CreateObject("Progid","Prefix")
我们将进行事件编程!故第二个参数是不能少的!
在功能方面!我只写了列远端目录,可根据需要加入其它功能,例如结合【Adodb.stream】发送文件!
下面看代码!
复制内容到剪贴板
代码:
rem Server.vbs
Rem Server
'启动控件,要处理事件,第二个参数不能少!
Set MSock = Wscript.CreateObject("MSWinsock.Winsock","MSW_")
'事件处理区
'**************************
Sub MSW_DataArrival(iBytes)
MSock.GetData MSG,vbString
Select case MSG '在这里可以定义更多的命令!
Case "Bye"
MSock.SendData "Bye!Waiting for your return!"
Wscript.Sleep 1000
MSock.Close
Set MSock = nothing
Set MSock = Wscript.CreateObject("MSWinsock.Winsock","MSW_")
INITINIZE
Case "dir"
MSock.SendData dir
Case "!Terminate"
MSock.SendData "Server will Terminated for command <!Terminate>"
Wscript.Sleep 1000
MSock.close
Wscript.Quit
Case Else
MSock.SendData "Server cannot understand your command! check!"
Wscript.sleep 1000
MSock.Close
Set MSock = nothing
Set MSock = Wscript.CreateObject("MSWinsock.Winsock","MSW_")
INITINIZE
End Select
End Sub
Sub MSW_Close
'Wscript.echo "Connection close!"
SET MSock = nothing
SET MSock = Wscript.CreateObject("MSWinsock.Winsock","MSW_")
INITINIZE
End Sub
Sub MSW_ConnectionRequest(MSW)
IF MSock.State <> 0 Then
MSock.Close
MSock.Accept MSW
MSgbox "connected!"
Else
MSock.Accept MSW
End IF
End Sub
Sub MSW_SendComplete
End Sub
Sub MSW_SendProgress(iGOT,iLeft)
End Sub
Sub initinize
MSock.localPort = 10000
MSock.Protocol = 0
MSock.bind
MSock.listen
End Sub
'*********************************
'功能区
'*********************************
Function xSIN
Set xFso = Wscript.CreateObject("Scripting.Filesystemobject")
Set xFile = xFso.openTextFile("C:\xSIN")
xSIN = xFile.readAll
xFile.close
Set xFile = nothing
Set xFso = nothing
End Function
Function dir
Set SH = Wscript.CreateObject("Wscript.shell")
SH.run "cmd /c dir /a /s > C:\xSIN",0
Wscript.Sleep 1000
dir = xSIN
Set SH = nothing
End Function
'**********************************
'初始化和保留区
'**********************************
INITINIZE
While True
Wscript.Sleep 1000
WEnd
'**********************************
下面是客户端
复制内容到剪贴板
代码:
rem client.vbs
dim ASR,GOT
Set MSock = Wscript.Createobject("MSWinsock.Winsock","MSW_")
MSock.remoteHost = "127.0.0.1"
MSock.RemotePort = 10000
MSock.Protocol = 0
MSock.connect
do While True
ASR = inputBox("Please enter data for send:","SYSTEM PROMPT","Bye")
IF MSock.State = 7 Then
  MSock.SendData ASR
Else
  Wscript.Echo "Connection closed or not exist!"
  Wscript.Quit
End IF
Wscript.sleep 1000
loop
'MSock.onDataArrival = MSock.GetData(ASR,vbstring)
'MSock Event handler
SUB MSW_DataArrival(iBytes)
MSock.GetData GOT,vbString
Wscript.Echo GOT
End Sub
Sub MSW_Close
Wscript.Echo "Server closed connection!"
End Sub
代码很简单!如有疑问!请与我联系!谢谢
本人才疏学浅,错误之处在所难免,请高手指教,谢谢!
【后记】
如果没有安装visual basic 系统需要的activex 控件和相应的liciense授权文件请到
http://ovwx.ys168.com 下载

[ 本帖最后由 ovw 于 2008-6-19 21:49 编辑 ]
有笑容的地方,即使有苦也是甜的!

TOP

不错,简捷明了。楼主
很谦虚  …
的名义~~~~~~~~~~~~~~~

TOP

能用VBS来编,确实厉害
欢迎加入C++交流群
群号:64667050

TOP

不错,支持。
以子之,攻子之矛。

TOP

Processed in 0.031664 second(s), 5 queries, Gzip enabled.