ftp服务与客户端系统设计—免费毕业设计论文内容摘要:

格式化到来的显示信息数据 va_start(args, pstr)。 (pstr, args)。 //增添新元素,创建新到来的日志显示消息 CLogMsg *p_Log = new CLogMsg。 GetLocalTime(amp。 p_Log_SysTime_sheep)。 p_Log_Level_sheep = n。 p_Log_Text_sheep = temp。 ()。 (p_Log)。 ()。 //发送新到来的日志显示消息 PostMessage(WM_ADDTRACELINE)。 } 13 2. On_Trace_Ack(WPARAM, LPARAM)函数。 On_Trace_Ack 函数为日志消息响应函数,当服务器器接收到客户端的信息时,向显示 List 控件成功添加新元素后,向服务器日子模块发送日志显示消息;日子模块在响应函数 On_Trace_Ack 中,判断消息的类别,根据其类别设定其消息显示内容和内容显示颜色。 其函数实现代码为: LRESULT CFTP_Trace_Child::On_Trace_Ack(WPARAM, LPARAM) { CLogMsg *pLog_sheep。 pLog_sheep = (CLogMsg *)()。 //判断日志消息类别用不同颜色将其显示 if(pLog_sheep_Level_sheep==1) ((CColorListBox*)GetDlgItem(IDC_TRACE)) AddString(pLog_sheep_Text_sheep, RGB(0,255,255))。 else if(pLog_sheep_Level_sheep==2) ((CColorListBox*)GetDlgItem(IDC_TRACE)) AddString(pLog_sheep_Text_sheep, RGB(255,0,255))。 else if(pLog_sheep_Level_sheep==3) ((CColorListBox*)GetDlgItem(IDC_TRACE)) AddString(pLog_sheep_Text_sheep, RGB(255,0,0))。 else ((CColorListBox*)GetDlgItem(IDC_TRACE)) AddString(pLog_sheep_Text_sheep, RGB(0,0,255))。 delete pLog_sheep。 return TRUE。 } 3. OnSize(UINT nType, int cx, int cy)函数。 OnSize 为日子模块窗口大小改变事件响应函数,当应用程序窗口大小发生改变时,会触发窗口改变事件。 在事件响应函数 OnSize 中,日子模块改变窗口大小,使其和主窗口保持大小比例。 其函数实现代码为: void CFTP_Trace_Child::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy)。 if (IsWindow(::GetDlgItem(m_hWnd, IDC_TRACE))) { CRect my_rect。 GetClientRect(my_rect)。 //获得当前客户区窗口大小 //设置日子模块窗口大小和当前窗口一样大小 ((CColorListBox*)GetDlgItem(IDC_TRACE))MoveWindow(my_rect)。 } } 14 在线用户 模块 在线用户 模块的主要功能为显示当前连接上服务器的用户。 其显示内容有:用户登录用户名,用户 IP,用户登录时间。 显示方法为使用 ClistCtrl控件将显示内容显示在其上。 ClistCtrl 控件常用操作方法如下。 1) 设置 ClistCtrl 类 型。 DWORD SetExtendedStyle(DWORD dwNewStyle) ; 其中 LVS_EX_CHECKBOXES 表示添加 CheckBox, LVS_EX_FULLROWSELECT 表示选择整行 , LVS_EX_GRIDLINES 表示添加表格线。 如果设置了 LVS_EX_CHECKBOXES 属性,则可以用 BOOL GetCheck( int nItem ) const; 来得到某一行是否 Checked。 2) 删除操作。 BOOL DeleteItem( int nItem),删除指定的元素, nItem 为要删除的元素。 BOOL DeleteAllItems( ),删除所有的元素。 3) 插入元素操作。 int InsertItem( int nItem, LPCTSTR lpszItem), nItem 为插入元素索引号,lpszItem 为插入元素标签地址。 4)插入列操作。 int InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat = LVCFMT_LEFT, int Width = 1, int nSubItem = 1 ), nCol为新列索引号, lpszColumnHeading列元素存放名称地址。 5)设置列宽操作。 BOOL SetColumnWidth( int nCol, int cx ), nCol列所引号, cx设置宽度。 6)设置元素值操作。 BOOL SetItemText(int nItem,int nSubItem, LPCTSTR lpszText ), nItem 设置元素, nSubItem 设置子元素, lpszText 值内容地址。 其程序设计流程图如图 所示。 开始用户登录信息。 增加 Ctrl Li st 新元素登录信息正确。 查找用户 Ctrl Li st 元素删除用户 Ctrl Li st 元素用户下线信息结束NYNYYN 图 在线用户 模块设计流程图 15 Fig. Online user modular design flow chart 在线用户 模块运行界面图如图 所示。 图 在 线用户 模块运行界面图 Fig. Online user modular running interface 在线用户模块的实现主要通过设计 CFTP_OnlineUsers_Child 类来实现,其主要功能函数如下: 1. OnInitDialog() 函数。 OnInitDialog()为在线用户模块对话框初始函数,在线用户模块在这里为在线用户 List 显示控件,增添三个元素:“用户名”,“ IP 地址”,“登陆时间”,用来显示登陆用户的信息。 函数实现代码如下: BOOL CFTP_OnlineUsers_Child::OnInitDialog() { CDialog::OnInitDialog()。 ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) InsertColumn(0, ThreadID)。 //向 List控件添加 用户名 列元素 ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) InsertColumn(1, 用户名 )。 //向 List控件添加 IP 地址 列元素 ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) InsertColumn(2, IP 地址 )。 //向 List控件添加 登录时间 列元素 ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) InsertColumn(3, 登录时间 )。 DWORD dwStyle = ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) 16 GetExtendedStyle()。 dwStyle |= LVS_EX_FULLROWSELECT。 ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) SetExtendedStyle(dwStyle)。 return TRUE。 } 2. User_Add_sheep(DWORD nID, LPCTSTR lpName, LPCTSTR lpAddress) 函 数。 User_Add_sheep 函数为在线用户信息显示 List 控件,增加元素函数。 当有新的用户登录服务器时,在线用户模块调用 User_Add_sheep 函数,显示新的登录用户信息。 函数实现代码如下: void CFTP_OnlineUsers_Child::User_Add_sheep(DWORD nID, LPCTSTR lpName, LPCTSTR lpAddress) { CString my_strThreadID。 (%d, nID)。 LVFINDINFO info_sheep。 = LVFI_PARTIAL|LVFI_STRING。 = (LPCTSTR)my_strThreadID。 int nIndex。 if (nIndex= ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS))FindItem(amp。 info_sheep) , nIndex== 1) { nIndex = ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS))InsertItem(0, my_strThreadID)。 } else { AfxMessageBox(添加用户出错 )。 return。 } //显示用户登录用户名 ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) SetItemText(nIndex, 1, lpName)。 //显示用户登录 IP地址 ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) SetItemText(nIndex, 2, lpAddress)。 //显示用户登录时间 ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS)) SetItemText(nIndex, 3, CTime::GetCurrentTime().Format(%H:%M:%S))。 } 3. Delete_User_sheep(DWORD nID)函数。 Delete_User_sheep 函数为在线用户信息显示 List 17 控件,删除元素函数。 当有用户下线时或则断开服务器连接时,在线用户模块调用Delete_User_sheep 函数,删除相应的登录用户信息。 函数实现代码如下: void CFTP_OnlineUsers_Child::Delete_User_sheep(DWORD nID) { LVFINDINFO info_sheep。 CString my_strThreadID。 (%d, nID)。 = LVFI_PARTIAL|LVFI_STRING。 = (LPCTSTR)my_strThreadID。 int nIndex。 //查找下线用户所在元素 索引 if (nIndex = ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS))FindItem(amp。 info_sheep) , nIndex != 1) { ((CListCtrl*)GetDlgItem(IDC_ONLINE_USERS))DeleteItem(nIndex)。 //删除下线元素所在显示元素 } else AfxMessageBox(没有找到要删除用户 )。 } 程序设置 模块 程序设置 模块的主要功能为配置 服务器参数。 其配置参数有: FTP 连接端口,最大用户连接数,服务器开启方式,服务器系统信息, Log文件查看和清除。 其程序设计方法为:系统时刻监控 程序设置 模块,当 程序设置 模块触发应用消息时,系统重新读入配置信息;当 程序设置 模块触发查看 Log 信息时,打开 Log 文件;当 程序设置 模块触发清除 Log 信息时,清空Log文件。 其程序流程图如图 所示。 18 开始配置应用消息触发。 查看 Lo g 消息触发清空 Lo g 消息触发结束系统读入配置信息 ,重配系统打开 Lo g 文件清空 Lo g 文件YYYNNN 图 程序设置 模块设计流程图 Fig. Procedures settings modular design flow。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。