(1)显示指定被控端的实时信息:包括查看一台或多台轮询等方式。
(2)获取所有被控端的信息,如屏幕图像等。
(3)对被控端进行人工的控制:加入黑名单、加锁、解锁以及发布通知等。
根据以上的主要功能可以将控制端分成三个模块:控制模块、控制端消息引擎和网络传输模块,其中控制模块主要完成抓取控制端在被控端屏幂上屏幕图片信息并生成相应的消息,控制端消息引擎主要识别被控端发送过来的消息及调用相应的处理过程,网络传输模块传输控制端生成的消息。
5.1.1 控制模块的实现
实时地监视被控端的目的是为了能够更好的管理和控制局域网中的机器。本系统的监控端流程如图5.1.1所示。
图5.1.1监控端流程
主要功能代码实现及说明:
(1) void CServerLanDlg::OnReceived(WPARAM wParam, LPARAM lParam)
此函数主要是接收消息引擎,根据监控端接收到的消息来处理响应,主要接收到的消息包括USER_ON,USER_OFF_USER_JOIN,以及获得被控端显示数据。
void CServerLanDlg::OnReceived(WPARAM wParam, LPARAM lParam)
{
//接收数据
char* buffer = new char[MAX_BUFF];
sockaddr_in addr;
int factsize =sizeof(sockaddr);
int ret = recvfrom(m_socket,buffer,MAX_BUFF,0,(sockaddr*)&addr,&factsize);
if (ret != -1)
{
if(ret == USER_ON)
{
if(buffer[0] == 'w')
{
int i = m_List1.GetItemCount();
int flag = 0;
for(int j = 1; j <= i; j++)
{
CString tempIP;
m_List1.GetItemText(j-1,0,tempIP.GetBuffer(15),15);
tempIP.ReleaseBuffer();
if(tempIP == inet_ntoa(addr.sin_addr))
{
flag = 1;
break;
}
}
if(flag)
{
m_List1.SetItemText(j-1,1,"在线");
}
else
{
m_List1.InsertItem(i,inet_ntoa(addr.sin_addr)); VC++局域网远程监控系统的设计与实现(9):http://www.youerw.com/jisuanji/lunwen_9599.html