二、客户端与服务器通信
服务器要控制多个客户端,如实施远程关机、发送命令等,必须通过网络通信。设计中用VB6.0中的Winsock控件来实现网络通信。服务器要可靠的与客户端通信,同时要在服务器管理软件中实时地显示连接状态,只有确保连接后才能够实现网络控制,所以采用TCP/IP协议建立网络连接。
计算机通信端口从1~65535,设计中通信端口从1000开始,服务器一个端口对一个远程计算机进行TCP/IP通信,例如计算机1000申请向服务器通信端口1000申请TCP/IP连接,服务器设计的每个通信端口都处于侦听状态,只要有远程计算机申请就连接,其连接示意图如图2所示。
图2 服务器与客户端TCP/IP连接示意图
服务器端侦听代码:
sckserver(0).LocalPort = 1000 '设置服务器监听端口
sckserver(0).Listen '启动监听
服务器端接收连接代码:
Private Sub sckserver_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If sckserver(Index).state <> 0 Then
sckserver(Index).Close '如申请连接的服务器端口没关,则先关闭此端口
End If
sckserver(Index).Accept requested '对应服务器端口接收客户端申请连接
sckserver(Index).SendData "你已经与服务器建立连接!" '向客户端回发已连接成功的信号
End Sub
客户端申请连接代码:
sckclient.RemoteHost = remoteIP '设置客户端的IP地址或计算机名
sckclient.RemotePort = 1000 '设置需要连接的远程服务器端口
sckclient.Connect '连接远程服务器
发送数据采用Winsock的SendData方法,通过上述代码可以进行网络通信。
三、远程关机
1.远程关机的设计思想
在TCP/IP 网络协议的C/S结构中,在一个计算机上装上服务器端的软件(控制方通过端口给受控方的端口发送数据包),在受控的另外的计算机上装上客户端的软件(用于侦听端口并接收数据包),通过TCP/IP 网络协议来进行网络通信。建立网络连接后,如果要关闭客户端计算机,只要向客户端发送“关机”命令,当客户端收到该命令后调用系统中的关机函数,就可完成关机操作。假设需要控制的计算机的IP地址为192.168.45.68,服务器端的主要程序代码如下:
remoteIP = "192.168.45.68" '设置需要连接的IP地址
sckclient.RemoteHost = remoteIP
sckclient.RemotePort = 1001 '设置需要连接的远程端口
sckclient.Connect '连接远程计算机
连接上之后,如果要求关闭远程计算机,发送“关机”字符串命令:
Private Sub sckserver_Connect()
sckserver.SendData "关机" End Sub
|