⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 activclient.cpp

📁 一个网络监视的程序
💻 CPP
字号:
// ActivClient.cpp: implementation of the ActivClient class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ccams.h"
#include "ActivClient.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

ActivClient::ActivClient( int nGrow )
{
	m_caList.SetSize(0, nGrow);
	ReSet();
}

ActivClient::~ActivClient()
{

}

//===============================================================
// 函 数 名:IsOnLine
// 功能描述:检测指定主机是否活动
// 输入参数: 主机IP地址: ip
// 返回参数: 主机在 m_caList 中对应的序号
// 创建日期:04-7-18
// 修改日期:04-7-20
// 作    者:郑富强
// 附加说明: 成功则返回序号, 否则返回 -1
//===============================================================
int ActivClient::IsOnLine( LPCTSTR  ip )
{
	CString str = ip;
	int count = m_caList.GetSize();
	int i = 0;
	while ( i < count )
	{
		if ( m_caList[i] == str )
			return i;
		i++;
	}
	return -1;
}

//===============================================================
// 函 数 名:AddClient
// 功能描述:填加主机, 同时设置该主机对应的计数器
// 输入参数: 新增主机的IP地址: ip
// 返回参数: 执行成功则是新增主机在 m_caList 中对应的序号,否则 -1
// 创建日期:04-7-18
// 修改日期:04-7-20
// 作    者:郑富强
// 附加说明: 主机第一次连接时调用此函数, 填加进当前活动主机列表
//===============================================================
int ActivClient::AddClient( LPCTSTR  ip )
{
	// 如果存在, 则返回
	if ( IsOnLine(ip) != -1 )
		return -1;

	m_caList.InsertAt( m_caList.GetSize(), ip );	// 准备插入, 不用函数 Add
	for ( int i=0; i<5; i++ )
		m_nDataSum[m_caList.GetSize()-1][i] = 0;
	return m_caList.GetSize()-1;
}

//===============================================================
// 函 数 名:AddClient
// 功能描述:删除主机
// 输入参数: 新增主机的IP地址: ip
// 返回参数: 执行成功则是新增主机在 m_caList 中对应的序号,否则 -1
// 创建日期:04-7-18
// 修改日期:04-7-20
// 作    者:郑富强
// 附加说明: 主机退出时调用此函数
//===============================================================
int ActivClient::RemoveClient( LPCSTR ip )
{
	int index = IsOnLine( ip );
	if ( index >= 0 )
	{
		m_caList.RemoveAt( index );

		// 数据前作相应移位
		for ( int i=index; i<m_caList.GetSize(); i++ )
		{
			for ( int j=0; j<5; j++ )
				m_nDataSum[index][i] = m_nDataSum[index+1][i];
		}
		return index;
	}
	return -1;
}

//===============================================================
// 函 数 名:GetCount
// 功能描述:求当前活动主机列表中的主机数目
// 输入参数: void
// 返回参数: 主机数目
//===============================================================
int ActivClient::GetCount()
{
	return m_caList.GetSize();
}

//===============================================================
// 函 数 名:RemoveAll
// 功能描述:清空当前活动主机列表
//===============================================================
void ActivClient::RemoveAll()
{
	m_caList.RemoveAll();
	ReSet();
}

//===============================================================
// 函 数 名:ReSet
// 功能描述:把所有当前活动主机计数器置零
//===============================================================
void ActivClient::ReSet()
{
	for ( int i=0; i<MAXCLIENTNUM; i++ )
		for ( int j=0; j<5; j++ )
			m_nDataSum[i][j] = 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -